Javascript 从脚本调用Html.Actionlink
我试图从脚本中调用action link,但它不起作用, 但是,当我使用Javascript 从脚本调用Html.Actionlink,javascript,html,asp.net-mvc,devexpress,devexpress-mvc,Javascript,Html,Asp.net Mvc,Devexpress,Devexpress Mvc,我试图从脚本中调用action link,但它不起作用, 但是,当我使用window.open时,它正在工作,但由于我的CSS视图,我需要其他属性,如果我可以调用Html.ActionLink的话,我可以在与模板相同的页面上的选项卡中打开它 以下是代码: function OnRowDblClick(s, e) { alert(e.visibleIndex); GridViewCitiesList.GetRowValues(e.visibleIndex, "CityGuid",
window.open
时,它正在工作,但由于我的CSS视图,我需要其他属性,如果我可以调用Html.ActionLink
的话,我可以在与模板相同的页面上的选项卡中打开它
以下是代码:
function OnRowDblClick(s, e) {
alert(e.visibleIndex);
GridViewCitiesList.GetRowValues(e.visibleIndex, "CityGuid", OnGetRowValues);
}
function OnGetRowValues(data) {
var url = Html.ActionLink("Edit", "CityAction", "City", new { CRUDType: CRUDTypes.Update, ModelGuid: data }, new { class: "btn btn-success", target: "_blank", title: "City Detail" });
window.location.href = url;
}
错误是:
未捕获引用错误:未定义Html
当前代码有几个问题: 1)
Html.ActionLink
是一个MVC帮助程序,您应该在Html页面中添加@
前缀,将其设置为Html帮助程序
2) Html.ActionLink
生成锚定标记(helper)以创建URL
3) 数据
是客户端变量,不能将其传递给处理服务器端数据的HTML助手。您需要构建查询字符串,以便使用ModelGuid
参数添加数据
根据以上说明,更改URL定义如下:
// this is totally wrong
var url = Html.ActionLink("Edit", "CityAction", "City", new { CRUDType: CRUDTypes.Update, ModelGuid: data }, new { class: "btn btn-success", target: "_blank", title: "City Detail" });
对于这一点:
var url = '@Url.Action("CityAction", "City", new { CRUDType = CRUDTypes.Update })&ModelGuid=' + data;
或者您可以尝试将ModelGuid
参数查询字符串添加到routevalue
中,并从客户端替换其值:
// this setup should also work
function OnGetRowValues(data) {
var url = '@Url.Action("CityAction", "City", new { CRUDType = CRUDTypes.Update, ModelGuid = "XXXX" })';
url = url.replace('XXXX', data);
window.location.href = url;
}