【问题标题】:Why links generated with @Url.Action in JavaScript are not in lowercase when using AttributeRouting?为什么使用 AttributeRouting 时在 JavaScript 中使用 @Url.Action 生成的链接不是小写的?
【发布时间】:2012-07-07 00:23:56
【问题描述】:

我在 JavaScript 函数中有这段代码:

var url = '@Url.Action(MVC.Membership.User.ActionNames.Update, MVC.Membership.User.Name)';

url += "?userName=" + userName;

ul.append("<li><a href=" + url + "\>" + userName + "</a></li>");

Membership 是一个Area。我使用T4MVC 来引用控制器和动作名称以避免魔术字符串... :)

JavaScript 代码是位于Membership 区域中的View 的一部分。

UserController 是这样装饰的:

[RouteArea("Membership")]
public partial class UserController : BaseController

Action 方法就是这个:

[GET("Users/Update/{userName}")]
public virtual ActionResult Update(string userName)

我在链接中得到的路线是这样的:

http://localhost:8087/membership/User/Update?userName=leniel

我希望它是:

http://localhost:8087/membership/users/update?userName=leniel

所以我的问题是:为什么链接不是小写的,因为应用程序中的所有其他链接都是用小写字母生成的?这是不支持还是我忘记了一些与AttributeRouting 或区域设置相关的配置?

【问题讨论】:

    标签: javascript asp.net-mvc-4 asp.net-mvc-areas attributerouting url-action


    【解决方案1】:

    在来自 AttributeRouting 创建者的feedback 之后...原来是我的错。

    现在我明白了这个问题......

    如果我这样做:

    var url = '@Url.Action(MVC.Membership.Permission.ActionNames.GrantRevoke, MVC.Membership.Permission.Name, new { area = "Membership", roleName= "Teste" }, null)';
    

    URL 生成正确:

    var url = '/membership/permissions/grantrevoke/teste';
    

    但如果我这样做:

    var url = '@Url.Action(MVC.Membership.Permission.ActionNames.GrantRevoke, MVC.Membership.Permission.Name, new { area = "Membership" }, null)';
    

    我明白了:

    var url = '/Membership/Permission/GrantRevoke';
    

    很明显我需要传递roleName参数。

    【讨论】:

      猜你喜欢
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      相关资源
      最近更新 更多