Почему ссылки, сгенерированные с помощью @Url.Action в JavaScript, не пишутся строчными буквами при использовании AttributeRouting?

У меня есть этот код в функции 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 код является частью View который находится в Membership Площадь.

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 или настройки области?

1 ответ

Решение

После обратной связи от создателя 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.

Другие вопросы по тегам