2012-05-11 7 views
1

に複数のパラメータを渡す私は今3 paramteresはmvc3

public ActionResult Directives(string MachineName, int ProjectId, int CompanyId) 

をとるコントローラを持っているURLは次のようになります。

/Project/Directives?projectId=41&MachineName=Apple%20Macbook%20Luft 

しかし、どうすればこのように見えるのですか。

/Project/Directives/41/AppleMacbookAir/ 
+2

あなたを助けるかもしれませんか? http://stackoverflow.com/questions/217960/how-can-i-create-a-friendly-url-in-asp-net-mvc –

+0

登録されたパターンを処理するルートがある場合、URLが変更されます。 –

答えて

2

ASP.NET MVC Routing

上 フォローすることでスティーブンWaltheの記事はこれを参照してください。このquiestion

routes.MapRoute(
    "Project",            // Route name 
    "{Controller}/{Action}/{projectId}/{machineName}/{companyId}",       
    new { controller = "Project", action = "Directives", projectId = 0, machineName = "", companyId = 0 } // Parameter defaults 
); 

http://www.asp.net/mvc/tutorials/controllers-and-routing/creating-custom-routes-cs

+0

完全に動作します。しかし、私はリターンのRedirectToAction( "ディレクティブ"、 "プロジェクト"、新しい{MachineName = project.MachineName、ProjectId = projectId、CompanyId = user.Company_Id})を得ることはできません;これはまだ/ Dire .../Project = 23&CompanyId = 27 .... – mortenstarck

+0

リターンRedirectToAction( "ディレクティブ"、 "プロジェクト"、新しい{projectId = projectId、machineName = project.MachineName、CompanyId = user.Company_Id} ); 'おそらく正しい順序でパラメータを持つ必要がありますか? –

+0

試したことがあります。まだ同じ。 – mortenstarck

1

RedirectToAction()メソッドのrouteValuesパラメータの一部としてidを渡すことができます。

return RedirectToAction("Action", new { id = 99 }); 

これはSite/Controller/Action/99.

編集へのリダイレクトが発生します:あなたは任意のパラメータがオプションかどう

routes.MapRoute( "Project", // Route name 
        "{controller}/{Action}/{ProjectId}/{MachineName}/{CompanyId}", 
        new { controller = "Project", 
         action = "Directives", 
         ProjectId= 0, 
         MachineName= "", 
         CompanyId = 0 
         } // Parameter defaults); 

使用UrlParameter.Optional:URLをカスタマイズするための 、あなたはとしてcustom routeを作成する必要があります。カスタムルート試しRedirectToAction with parameter