2011-12-16 4 views
0

私はHtml.ActionLinkを使用するたびに、いつも私にパラメータを与えますか?代わりにそれはURLの一部である。例えばHtml.ActionLinkを取得して非クエリーストリングリンクを返す方法

@Html.ActionLink("Edit", "Edit", new { Username = (string)item.username }) 

は私を与える:代わりの

/Edit?Username=username 

/Edit/Username 

を、私はそれが私のコントローラで定義されているよう。

他の方法を教えてもらえますか?方法の代わりに。

おかげ

答えて

2

あなたはおそらくあなたのUsernameパラメータを定義するためにglobal.asaxにルートを登録する必要があります。

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "EditStuff", 
     "{controller}/{action}/{Username}", 
     new { controller = "YourControllerName", action = "Edit" } 
    ); 

    // the default 
    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
    ); 

} 
0

私はこれらの事のためAttributeRoutingを使用し、それをあなたが実際のパスを使用してコントローラを飾ることができ、ように:

[GET("/Edit/{Username}")] 
public ActionResult Edit(string Username) 
+0

@AndrewBarber - ありがとう、私はポストを更新しました。 – Madd0g

関連する問題