我在任何應用程序,在那裏我有以下功能非常典型的情況:在asp.net中查看和控制器mvc3 - 控制器應該一對一匹配一個視圖嗎?
- 創造新的紀錄
- 編輯現有記錄
- 因此其他無關的動作
IMO,創建並且編輯應該由相同的視圖服務,但是不同的操作。但似乎我必須使動作名稱與視圖名稱相匹配......您是否會使用部分視圖來執行此操作?我寧願不將這種情況複雜化 - 這非常簡單,並且幾乎出現在每個Web應用程序中。
我在任何應用程序,在那裏我有以下功能非常典型的情況:在asp.net中查看和控制器mvc3 - 控制器應該一對一匹配一個視圖嗎?
IMO,創建並且編輯應該由相同的視圖服務,但是不同的操作。但似乎我必須使動作名稱與視圖名稱相匹配......您是否會使用部分視圖來執行此操作?我寧願不將這種情況複雜化 - 這非常簡單,並且幾乎出現在每個Web應用程序中。
行動可以返回一個diferent名稱的看法是這樣的:
public ActionResult OneName()
{
return View("OtherName");
}
如果不指定視圖名稱(視圖(「」),那麼該觀點與動作的名稱
視圖部分視圖是一個很好的答案。我建議你看看MvcScaffold NuGet包是如何做到的。 See here或在Visual Studio中獲取包。
我只是完全使用相同的動作,並使用該ID,以確定這是否是一個新的記錄或更新現有的一個:
/Forum/Post/Edit/0
創造新紀錄
/Forum/Post/Edit/10457
更新ID爲10457
但是,由於您堅持使用不同的操作,爲什麼不簡單地創建2個操作,都返回相同的視圖?
public class PostController : Controller
{
public ActionResult Create(Post post)
{
// work your magic...
return View("Edit", post);
}
public ActionResult Update(Post post)
{
// work your magic...
return View("Edit", post);
}
}
如果這在您的方案中無法正常工作,那麼您幾乎不會留下部分視圖。
''我會完全使用相同的動作,並使用ID來確定這是一個新記錄還是現有的「 - 可怕的,可怕的設計。 – Dismissile
@Dismissile我會接受該評論作爲接受的答案... +1 – gdoron
@Dmissmissile它如何算作可怕的設計?通常認爲Id = 0是新記錄。幾乎每一個軟件都使用ID來跟蹤記錄。如果這是糟糕的設計,我們只能渲染全球99%的應用程序。所以,請證明你的觀點。 –
這就是我正在尋找的! – sarsnake