Почему ссылки, сгенерированные с помощью @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.