2011-11-22 30 views
2

我在任何應用程序,在那裏我有以下功能非常典型的情況:在asp.net中查看和控制器mvc3 - 控制器應該一對一匹配一個視圖嗎?

  • 創造新的紀錄
  • 編輯現有記錄
  • 因此其他無關的動作

IMO,創建並且編輯應該由相同的視圖服務,但是不同的操作。但似乎我必須使動作名稱與視圖名稱相匹配......您是否會使用部分視圖來執行此操作?我寧願不將這種情況複雜化 - 這非常簡單,並且幾乎出現在每個Web應用程序中。

回答

2

行動可以返回一個diferent名稱的看法是這樣的:

public ActionResult OneName() 
{ 
    return View("OtherName"); 
} 

如果不指定視圖名稱(視圖(「」),那麼該觀點與動作的名稱

視圖
+0

這就是我正在尋找的! – sarsnake

0

部分視圖是一個很好的答案。我建議你看看MvcScaffold NuGet包是如何做到的。 See here或在Visual Studio中獲取包。

-1

我只是完全使用相同的動作,並使用該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); 
    }  
} 

如果這在您的方案中無法正常工作,那麼您幾乎不會留下部分視圖。

+3

''我會完全使用相同的動作,並使用ID來確定這是一個新記錄還是現有的「 - 可怕的,可怕的設計。 – Dismissile

+1

@Dismissile我會接受該評論作爲接受的答案... +1 – gdoron

+0

@Dmissmissile它如何算作可怕的設計?通常認爲Id = 0是新記錄。幾乎每一個軟件都使用ID來跟蹤記錄。如果這是糟糕的設計,我們只能渲染全球99%的應用程序。所以,請證明你的觀點。 –

相關問題