ASP.NET MVC ActionLinkの中にエンコードデータビュー値
-
05-09-2019 - |
質問
私は、テンプレートに値をバインドするには、Microsoft AjaxのテンプレートのDataViewを使用しています。私はこれを行うことができますし、あなたが期待するようには機能します:
<h3>{{ID}}</h3>
<p>{{Address}}</p>
しかし、私はそれにIDを持っているアクションリンクを構築しようとしています。
<h2><%= Html.ActionLink(Html.AttributeEncode("{{Name}}"), "Index", "Restaurant", new { Id = Html.AttributeEncode("{{ID}}") }, null)%></h2>
の名前は私が望んでいたとして、リンクテキストとして表示されますが、リンクはIDが含まれていない、代わりにそれは、%7B%7BID%の7D%7D
を持っていますどのように私は、Idが適切に解析されたリンクに追加するになるだろう?
解決 2
は、最後にそれが動作するようになった私は愚かである、またはそれはドキュメントの不足ですが、ここではリンクにデータビュー値をバインドする方法であればされた場合、私は知りません。
<h2><a sys:href="{{'Restaurant/Index/' + ID}}">{{Name}}</a></h2>
実際のURLのルート部分は、単一引用符で囲む必要があり、あなたは、SYSを使用する必要があります。hrefの代わりのhrefを
他のヒント
これは、余分な括弧はそれを投げている可能性があります。変数に値を代入し、ActionLinkの中の変数を使用してみてください。あなたは、ビューの上部に割り当てを行い、その後、同様のビューを通じてそれらを再利用することができます。どこにでもそれらを再エンコードすることから保つために。
<% var id = Html.AttributeEncode( "{{ID}}" );
var name = Html.AttributeEncode( "{{Name}}" );
%>
<h2><%= Html.ActionLink(name, "Index", "Restaurant", new { Id = id }, null)%></h2>
その良い練習アプリケーション名と競合したURLの問題を回避するには、手動URLを構築するとき'<%= Url.Action("Index", "Restaurant")%>'
を含めるます。
所属していません StackOverflow