我正在尝试使用Url.Action助手在我的cshtml页面中为一些javascript注入一个链接。
我期待这个输出:
'/en-GB/Admin/Widgets/Edit/9c983e73-49a6-4f55-8fa1-e80e0bf35558?templateId=' + templateId'`
但这是生成的内容:
'/en-GB/Admin/Widgets/Edit?objectEntityGuid=9c983e73-49a6-4f55-8fa1-e80e0bf35558?templateId=' + templateId'
以下是代码:
function Load(newId) {
var url = '@Url.Action("Add", "Widgets", new { area = "Admin", objectEntityGuid = ViewContext.RouteData.Values["objectEntityGuid"] })?templateId=' + newId;
if (newId > 0) {
var url = '@Url.Action("Edit", "Widgets", new { area = "Admin", objectEntityGuid = ViewContext.RouteData.Values["objectEntityGuid"] })?templateId=' + newId;
}
$.get(url,
{ "underlyingContext": underlyingContext },
function (data) {
$("#WidgetDialog").html(data);
}
);
}
答案 0 :(得分:0)
我假设您有一个名为Area
的{{1}},此文件为Admin
。尝试将/Areas/Admin/AdminAreaRegistration.cs
中的RegisterArea
方法更改为:
/Areas/Admin/AdminAreaRegistration.cs
答案 1 :(得分:0)
您的Url.Action方法尝试使用输入参数objectEntityGuid和templateId调用Widget控制器上的Edit操作。
MVC中的默认格式确实是Controller / Action?parameterOne = someParameter& parameterTwo = someParameter。
如果您在RouteConfig.cs中设置了自定义路线,则可以使用
生成合适的URL@Url.RouteUrl("RouteName", new { action="Edit", objectEntityGuid =
ViewContext.RouteData.Values["objectEntityGuid"] })
路线设置可能如下所示:
routes.MapRoute(
name: "RouteName",
url: "en-GB/Admin/Widgets/{action}/{objectEntityGuid}",
defaults: new { controller = "Widgets" }
);