如何使用javascript在.net标记帮助器属性中设置值?

如何使用javascript在.net标记帮助器属性中设置值?,javascript,c#,jquery,asp.net-core-tag-helpers,Javascript,C#,Jquery,Asp.net Core Tag Helpers,我正在尝试将从页面上的文本框读取的参数值设置为此链接: <a asp-action="RetrieveEmailRecipients" asp-route-clientnumber="getClientNumber()">Retrieve Email Recipients</a> 检索电子邮件收件人 我在页面底部的其他地方有Javascript。但这显然不是将值传递给MVC动作方法参数的正确方法 实际读取的参数ClientNumber与asp route Client

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

<a asp-action="RetrieveEmailRecipients" asp-route-clientnumber="getClientNumber()">Retrieve Email Recipients</a>
检索电子邮件收件人
我在页面底部的其他地方有Javascript。但这显然不是将值传递给MVC动作方法参数的正确方法

实际读取的参数ClientNumber与asp route ClientNumber中的字符串/值无关,在本例中,该值为getClientNumber()


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

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

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

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

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

比如:

  • 给锚定一个标识符——这样您就可以使用jquery轻松地访问它并删除路由

    <a id="aRetriveEmail" asp-action="RetrieveEmailRecipients">Retrieve Email Recipients</a>
    

  • 非常感谢,我正在考虑这个问题,但是看到stackoverflow上的一些帖子显示在属性中调用javascript是有效的,这就是为什么我认为这可能是其他错误。我认为我想要的解决方案还需要删除a标记中的asp action属性。否则,它还将在不传递任何值的情况下再次调用同一操作方法。我从浏览器的开发者工具中注意到了这一点。您是否仍然有到stackoverflow帖子的链接,该帖子说在属性work中调用javascript?您将需要
    asp操作
    ,因此它将使用默认控制器和特定操作生成url(在您的情况下,
    RetrieveEmailRecipients
    )您的
    getClientNumber()
    在做什么?如果您不需要来自客户端的信息,您可以尝试将相同的逻辑转换为c#,然后在生成anchorgetClientNumber()时调用它。anchorgetClientNumber()只是一个javascript函数,它返回页面上客户端编号字段的值,如下所示:$('#ClientNumber').val()。我说它似乎不需要asp action属性的原因是,在浏览器的开发工具中,我注意到有两个调用控制器中的RetrieveEmailRecipients方法。第一个有我想要的参数,第二个没有。但最后,我使用了ajax调用,因为我从后端获取数据,实际上不需要重定向,所以这里不需要新的url。谢谢你的帮助。
    $(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();
        })
    })