【问题标题】:How to add hyperlink inside ClientTemplate with IF condition- Ajax Bound Kendo UI for ASP.NET MVC如何使用 IF 条件在 ClientTemplate 中添加超链接 - Ajax Bound Kendo UI for ASP.NET MVC
【发布时间】:2016-11-10 15:03:44
【问题描述】:

我正在使用 ASP.NET MVC。我想在 Ajax Bound Kendo UI 网格中将 Account_Number 列作为 HTML 链接,当它未被上一页的 Account_Number 搜索时。当点击 Account_Number 链接时,它应该将 Account_Number 传递给客户控制器方法“QuickCheckSearch”。
下面的代码不会填充视图中的网格,也不会调用/将值传递给控制器​​。有人可以更正以下代码吗?

提前致谢。

  columns.Bound(p => p.Account_Number)
 .ClientTemplate("<#if (item.Account_Number == Model.AccountNumber){>Account_Number <# }" + "else{#><a href='" + Url.Action("QuickCheckSearch", "Customer") + "?Account_Number=#=Account_Number#'>#= Account_Number #</a> <# } #>")
 .Title("Account Number");

【问题讨论】:

    标签: asp.net kendo-ui kendo-grid kendo-asp.net-mvc


    【解决方案1】:
    1. 阅读http://docs.telerik.com/kendo-ui/framework/templates/overview
    2. 你的尖括号太多了。您应该只将它们放在模板的实际 HTML 标记上,not 作为模板语法本身的一部分。试试:

      .ClientTemplate(
          "# if (Account_Number ==" + @Model.AccountNumber + "){ #" +
              "#= Account_Number #" +
          "# }" +
          "else { #" +
               "<a href = '" + Url.Action("QuickCheckSearch", "Customer") + "?Account_Number=#=Account_Number#'>#= Account_Number#</a>" +
          "# } #"
      )
      

    我发现将其格式化在单独的行上确实很有帮助,就像您编写实际代码而不是全部在一行上一样,这样您就可以直观地看到结构。

    你也可以这样做,这样可能更干净:

    .ClientTemplate("#= accountLinkTemplate(data) #")
    ....
    <script>
         function accountLinkTemplate(data) {
            var template = data.Account_Number;
            if (data.Account_Number == " + @Model.AccountNumber + ") {
                template = "<a href = '" + "@Url.Action("QuickCheckSearch", "Customer")" + "?Account_Number=" + data.Account_Number+ "'>" + data.Account_Number+ "</a>";
            }
    
            return template;
        }
    </script>
    

    【讨论】:

    • 仔细检查所有内容...我刚刚在实时项目中重新测试了第一个,但使用了我自己的 ViewModel,当然,网格正在渲染,并且 url 格式正确。对于第二个,我只是用更正的模板编辑了我的答案。
    • 抱歉回答,因为它不允许我在评论中粘贴代码。我现在正在获取 url,但在这两种情况下,Account_Number 值都没有传递给控制器​​方法。
    • 您没有获得 ID,因为您正在使用“Account_Number=”格式化 URL,但您的控制器操作正在接受名称为“AccountNumber”的参数。您的服务器参数的名称必须与您在 url 中使用的名称匹配。
    • 非常感谢。有效。将 "?Account_Number" 更改为 "?AccountNumber" 。同样在比较脚本中的字符串时,必须使用 var modelAccountNumber = @Html.Raw(Json.Encode(Model.AccountNumber)); if (data.Account_Number == modelAccountNumber) { ..... }
    • 我还有一个关于锚标签的问题。单击“查看”链接时,我希望在模式弹出窗口中显示图像。如何做到这一点?这是实际上没有调用 js 函数的代码: columns.Template(p => p.ViewCheckImage).ClientTemplate( "# if (ViewCheckImage == true) {# " + "查看" + "#}" + "else { # Not Available# } #") .Title("检查图片");
    猜你喜欢
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多