0

我在 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代码是ViewMembership区域的一部分。

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或区域设置相关的配置?

4

1 回答 1

0

在 AttributeRouting 创建者的反馈之后......原来这是我的错。

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

如果我这样做:

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 参数。

于 2012-08-03T20:57:33.993 回答