如何将 JavaScript 函数的返回值作为 asp-route 值传递?

Mor*_*oro 2 javascript jquery kendo-ui asp.net-core-mvc

我需要做类似下面的事情-

function GetParentID() {
    var tv = $('#treeview').data('kendoTreeView'),
    selected = tv.select(),
    item = tv.dataItem(selected);
    var Value= (item.ID);
    return Value;
}
Run Code Online (Sandbox Code Playgroud)

然后我想使用这样的返回值-

<a asp-area="Marketing" asp-controller="Store" asp-action="Create" asp-route-ID="GetParentID()"  class="btn btn-default">Create</a>
Run Code Online (Sandbox Code Playgroud)

我尝试将值保存在隐藏输入中,如下所示:

<input id="p_ID" type="hidden" />
Run Code Online (Sandbox Code Playgroud)

然后填写这个输入 throw jQuery,它的工作方式是这样的:

$('#p_ID').val(GetParentID());
Run Code Online (Sandbox Code Playgroud)

但仍然无法将此值作为 asp-route-ID 传递我如何实现这样的目标?

Hop*_*ery 5

主要是 asp-route-ID="321545" 标签助手是服务器端助手而不是客户端

因此,您不能在服务器端使用客户端脚本,例如

JavaScript:只处理 Html 和 CSS(客户端)

C# + Razor + TagHelpers:是服务器端(在服务器上执行)

因此,其中一种方法是使用链接向服务器发送请求并在服务器端分配值,或者查看如何在客户端生成链接:/MyWeb/MyPageIndex/123545

如果我们可以说 123545 是 asp-route-ID,那么您需要:调用链接并在客户端更改 123545 示例:

<a id="stest" href="/MyWeb/MyPageIndex/123545" />
$("#stest").attr("href", "/MyWeb/MyPageIndex/" + GetParentID());
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读:http : //www.davepaquette.com/archive/2015/06/01/mvc-6-anchor-tag-helper.aspx