2012-08-22 90 views
3

我有以下的自定義路由可以將2個視圖與一個動作關聯嗎?

routes.MapRoute("custom", "Groups/{groupname}/{action}/{id}", new { controller = "Groups", action = "Index", id = UrlParameter.Optional }); 

這種定製路線是實現以下網址架構

  • 組/ pokerclub /會員/ - 列表pokerclub組的所有成員。
  • 團體/ pokerclub /會員/ bob - 列出bob的會員詳細信息。

我試過以下,但它不工作。它混淆了asp.net。mvc的哪個行動來選擇。

public ActionResult Members(string groupName, string id) 
    { 
     return View(); 
    } 

    public ActionResult Members(string groupName) 
    { 
     return View(); 
    } 

有跡象表明,我能想到的兩種可能的解決方案:

  • 有不同的動作名稱。例如成員列表操作和成員操作。
  • 使用簡單的if語句在視圖中處理此操作。

我非常想維護我的網址方案。因此,根據我原來的問題,如何將兩種不同的觀點與一項行動聯繫起來?謝謝。

RWendi

回答

3

你只能有一個動作,但你可以執行任何你想要的邏輯動作裏面,你可以調用名義發表意見:

return View("MyView"); 

在你的榜樣,你會簡單地如果id字段爲空,則返回不同的視圖。

2

在那裏說return View();它需要的參數,你可以得到它使用任何視圖,你想

return View("Members", model); 
+0

視圖是一個方法?新的關鍵字不會起作用。 – RWendi

0

你可以使用不同的方法:

[HttpGet] 
public ActionResult Members(string groupName, string id) 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult Members(string groupName) 
{ 
    return View(); 
} 
相關問題