【问题标题】:How to set value in .net tag helper attribute using javascript?如何使用 javascript 在 .net 标签助手属性中设置值?
【发布时间】:2018-02-22 21:05:26
【问题描述】:

我正在尝试将从页面上的文本框中读取的参数值设置为此链接:

<a asp-action="RetrieveEmailRecipients" asp-route-clientnumber="getClientNumber()">Retrieve Email Recipients</a>

我在页面底部的其他地方有 Javascript。但显然这不是将值传递给 MVC 操作方法的参数的正确方法。

实际读取的参数 ClientNumber 是 asp-route-clientnumber 中的字符串/值,在这种情况下,值是 getClientNumber()。

使用 javascript/jquery 在属性中设置值的正确方法是什么?

【问题讨论】:

    标签: javascript c# jquery asp.net-core-tag-helpers


    【解决方案1】:

    您将服务器端代码和客户端代码混合在一起

    我假设您的 getClientNumber() 是一个 javascript 函数

    标签助手是在 javascript进来之前生成的,所以当服务器生成html时,它不知道getClientNumber()是什么 所以将被视为文字字符串

    因此,正确的做法是在客户端编号可用时使用 jquery 修改 url

    类似:

    1. 给锚点一个标识符 - 这样您就可以使用 jquery 轻松访问它并删除路由

      <a id="aRetriveEmail" asp-action="RetrieveEmailRecipients">Retrieve Email Recipients</a>
      
    2. 每当您准备好 clientNumber 时,修改锚点的属性以包含您的 clientNumber,或使用 javascript 导航到它

      $(function(){
          $("#aRetriveEmail").click(function(){
              // example of how modifying href when client number ready
              // $(this).attr("href", $(this).attr("href") + "?clientnumber=" + getClientNumber());
      
              // or navigate to the url
              location.href = $(this).attr("href") + "?clientnumber=" + getClientNumber();
          })
      })
      

    【讨论】:

    • 非常感谢,我正在考虑这个问题,但看到 stackoverflow 上的一些帖子显示在属性中调用 javascript 有效,这就是为什么我认为它可能是其他错误。
    • 我想我想要的解决方案还需要去掉a标签中的asp-action属性。否则,它还会再次调用相同的操作方法而不传递任何值。我从浏览器的开发者工具中注意到了这一点。
    • 您是否还有指向在属性工作中调用 javascript 的 stackoverflow 帖子的链接?您将需要asp-action,因此它将使用默认控制器和特定操作(在您的情况下为RetrieveEmailRecipients)生成url 您的getClientNumber() 在做什么?如果您不需要来自客户端的信息,您可以尝试将相同的逻辑转换为 c#,然后您可以在生成锚点时调用它
    • getClientNumber() 只是一个 javascript 函数,它返回页面上客户端编号字段的值,如下所示:$('#ClientNumber').val()。我说它似乎不需要 asp-action 属性的原因是,在浏览器的开发人员工具中,我注意到控制器中有 2 次调用 RetrieveEmailRecipients 方法。第一个带有我想要的参数,第二个没有。但最后,我使用了 ajax 调用,因为我是从后端获取数据,并不需要重定向,所以这里不需要新的 url。感谢您的帮助。
    猜你喜欢
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    相关资源
    最近更新 更多