【问题标题】:generate URL with @Url.Action使用@Url.Action 生成 URL
【发布时间】:2011-12-22 11:05:02
【问题描述】:

我有一个关于 Url.Action 的问题。

我的职位是http://localhost/User/Edit,在某些情况下我必须生成一个带有 javascript 函数的链接,所以它会是这样的:

 return '<a href="@Url.Action("Group","Edit")/' +myParameterInJavascript +'>link</a>';

如果我查看链接,就可以了,我得到了:http://localhost/Group/Edit/ParameterFromJs
但是,那么当我现在的位置是http://localhost/Group/Edit/ParameterFromJs 我再次生成相同的链接,URL 将变为:

http://localhost/Group/Edit/ParameterFromJs/ParameterFromJs

我为什么不直接获取网址http://localhost/Group/Edit/ParameterFromJs? 为什么我的操作是 Edit/ParameterFromJs,而不仅仅是 Edit?

你能给我一些提示或提示吗?提前致谢

更新: 这是我的路线:

routes.MapRoute("group-edit",
            "Group/Edit/{groupName}",
            new
            {
                controller = "Group",
                action = "Edit"
            }
        );

【问题讨论】:

    标签: c# .net asp.net-mvc asp.net-mvc-3 razor


    【解决方案1】:

    尝试使用路由:

    var url = '@Url.Action("Group", "Edit", new { id = "__id__" })'.replace('__id__', myParameterInJavascript);
    return '<a href="' + url + '">link</a>';
    

    【讨论】:

    • @Rivera,您的路线定义如何?你有默认路由吗?更新您的路线,以便您在 url 中有一个 id 标记作为默认标记。
    • 其实我写的路线,我写的路线错了吗?请看更新
    • @Rivera,好的,所以您使用 {groupName} 令牌定义了一条路线。您现在可以使用它:new { groupName = "__id__" }).
    • aha 成功了,非常感谢 :) ,我认为是在 Url.Action 上,我错了 :)
    【解决方案2】:

    尝试使用类似的东西:

    <a href="@Url.Action("Edit", "Group", new { EditParam = myParameterInJavascript })">
    

    当你把参数使用“?”不是“/”

     http://localhost/Group/Edit?ParameterFromJs
    

    【讨论】:

      猜你喜欢
      • 2014-10-04
      • 2016-04-26
      • 1970-01-01
      • 2023-03-27
      • 2010-12-17
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多