2011-09-07 179 views
0

我有兩個控制器分別是SearchController和SearchByStaffController。他們非常相似,都有一個動作名稱爲「搜索」。當我在他們共同的超類中調用View(「Search」)時,會產生混淆。只有帶有SearchController的「搜索」視圖纔會呈現。ASP.Net MVC:在不同控制器中的相同操作名稱

  1. MVC框架是否只獲得與名稱匹配的第一個視圖並忽略其餘的?
  2. 我試圖在View()中傳遞視圖路徑,它工作。這樣做會有什麼副作用嗎?我在網上搜索,似乎以前沒有人做過。

謝謝!

+1

您可以發佈您的代碼和文件夾結構的看法? –

回答

0
Does the MVC framework get only the first view that matches the name and ignore the rest? 

是的。路由規則經過分析(從上到下),並且規則全部匹配。

I tried to pass the view path in View() and it worked. Would there be any side effect for doing so? I searched over the web and seems no one has done this before. 

你可以但我不喜歡,因爲MVC是基於約定。所以,我認爲強制視圖的途徑是打破常規的一種方式。你確定你不能簡單地爲這兩種方法創建兩個路由規則嗎?所以,你可以做這樣的事情:

return RedirectToAction("Search", "Controller1"); 

return RedirectToAction("Search", "Controller2"); 
+0

謝謝Iridio,是的,它打破了慣例,但可悲的是我無法做任何關於路由規則,這一切都取決於管理層的決定:( – jackielpy

0

user932390,

mvc使用約定而不是配置。這意味着「搜索」視圖將必須位於兩個:分別

views/SearchByStaff 

views/Search 

。唯一的解決方法是在 views/shared文件夾下找到搜索視圖,然後viewengine會在兩種情況下找到它並使用它(假設它們具有相同的模型)。

相關問題