代码之家  ›  专栏  ›  技术社区  ›  ddd

在ASP.NET MVC ActionLink中编码DataView值

  •  0
  • ddd  · 技术社区  · 17 年前

    我正在使用Microsoft Ajax模板数据视图将值绑定到模板。我可以做到这一点,它会如您所期望的那样工作:

    <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并将其添加到链接中?

    3 回复  |  直到 14 年前
        1
  •  0
  •   tvanfosson    17 年前

    可能是额外的括号把它扔掉了。尝试将值赋给变量并使用ActionLink中的变量。您可以在视图顶部执行分配,然后在整个视图中重用它们。为了避免在任何地方重新编码。

      <% var id = Html.AttributeEncode( "{{ID}}" );
         var name = Html.AttributeEncode( "{{Name}}" );
       %>
      <h2><%= Html.ActionLink(name, "Index", "Restaurant", new { Id = id }, null)%></h2>
    
        2
  •  0
  •   ddd    17 年前

    最后让它工作起来了,我不知道我是不是太笨了,还是缺少文档,但下面是如何将DataView值绑定到链接。

     <h2><a sys:href="{{'Restaurant/Index/' + ID}}">{{Name}}</a></h2>
    

    实际的URL路由部分需要单引号,并且您需要使用sys:href而不是href。

        3
  •  0
  •   Ayo    17 年前

    它的良好做法包括 '<%= Url.Action("Index", "Restaurant")%>' 当构建一个手动URL以避免应用程序名称和冲突的URL出现问题时。