2014-07-12 20 views
0

我搜索的時間比我想要承認的解決方案長,但找不到。MVC5對於多個頁面使用單個ActionResult?

我的網站有數百個靜態頁面。

爲每個視圖添加一個ActionResult非常繁瑣。因爲我不得不停止調試來編輯代碼。

因此,舉例來說,如果我想添加一個關於網頁我要補充...

public ActionResult About() 
    { 
     return View(); 
    } 

在我看來,我應該能夠使這個充滿活力,並通過在通過視圖路線。

我的意思是,只要我有一個名爲About.cshtml的文件,那麼爲什麼我需要添加一個自定義的ActionResult。

我寧願做這樣的事情,但它不起作用。

public ActionResult Index(_ViewName) 
    { 
     return View(_ViewName); 
    } 

是否有可能有一個通用的ActionResult並通過URL路由傳遞視圖的名稱?

+2

*我寧願這樣做,但它不起作用。* - 詳細說明?如果您正確設置視圖名稱的格式,那麼這絕對沒有理由不起作用(假設您實際編寫了編譯的代碼,而不是您發佈的內容)。 –

+0

詳細說明該特定評論...我說如果我可以將視圖傳遞到ActionResult將會很好。任何允許我有一個ActionResult的解決方案都會很棒。現在,你說沒有理由不應該假設我編寫了代碼並正確設置了視圖名稱的格式。那是這個問題。我不知道寫什麼代碼。如果你通過一個簡短的例子提供代碼(也許顯示路線和行動結果應該是什麼樣子),那麼這將是問題的答案,我會將它標記爲答案。 – user2341148

+0

但你幾乎已經完全符合你需要的代碼...除了你需要使用有效的方法簽名 - public ActionResult Index(string viewName){return View(viewName); }' –

回答

0

使用默認路線,您可以編輯index方法並完成。

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

public ActionResult Index(string id) 
{ 
    return View(id); 
} 

你要做的是根據你解析的名字添加視圖。

/home/index/about 
/home/index/contact 

About.cshtmlContact.cshtml意見應在/Views/Home/文件夾)

謝謝!

+0

上面的例子讓我看到了實現我的想法的工作,但是我錯誤地測試了它。我的URL爲/ home/about。所以這真的很簡單,就像上面兩種人試圖指出的一樣。我將其標記爲答案,因爲它包含URL示例。 – user2341148

相關問題