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ですAreaT4MVCマジックストリングを避けるためにコントローラーとアクションの名前を参照するために使用しています...:)

この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またはAreaの設定に関連するいくつかの構成を忘れていますか?

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 に答える