路由值添加到查询字符串

时间:2014-04-15 10:26:15

标签: asp.net-mvc

我正在尝试使用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);
          }
    );
 }

2 个答案:

答案 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" }
     );