2015-09-10 104 views
1

我想重載控制器的方法或行動我能夠編寫控制器的行動和編譯,但仍然沒有得到結果。我們可以重載MVC控制器的動作方法嗎?

public ActionResult Contact() 
    { 
     ViewBag.Message = "Your contact page."; 

     return View(); 
    } 
    public ActionResult Contact(string str) 
    { 
     ViewBag.Message = "Your contact page by overloaded method"; 

     return View(); 
    } 

但還是我收到以下錯誤 服務器錯誤 '/' 應用

enter image description here

+1

因爲兩者都是用於同一動作的[HttpGet],所以只有當HTTP動詞不同時,纔可以使用相同的名稱進行重載,否則使用不同的名稱。動作名稱屬性也會有所幫助,正如thangadurai所建議的那樣 – Rex

+1

不,你不能。但是你可以使用ActionName屬性來模擬它。 – Thangadurai

+0

謝謝@Thangadurai – Vijaykumar

回答

4

你得到的衝突,因爲,因爲string可爲空。

您可以使用[ActionName("NewActionName")]通過保留方法名稱來給出不同的操作名稱。

,如果你有這樣

public ActionResult Contact(int Value) 

另一種操作方法但是,下面的行動將再次失敗

public ActionResult Contact(int? Value) 

原因很明顯你不應該讓衝突。該參數可以爲空。

相關問題