2016-11-04 76 views
0

我有兩種方法(操作)具有不同的選項格式,但是當我運行它時,我被告知它們不明確。方法如下所示。控制器中的兩個操作與不同的參數設置衝突

public ActionResult SelectInstitutionToEdit(){...} 
public ActionResult SelectInstitutionToEdit(string message){...} 
+2

你可以在這裏找到答案.. [http://stackoverflow.com/questions/436866/can-you-overload-controller-methods-in-asp-net-mvc](http://stackoverflow.com /問題/ 436866 /罐,你超載控制器的方法,在-ASP淨MVC) –

回答

1

是的。你不能有多個同名的動作方法(&相同的http動詞)。

如果您希望爲HTTP GET請求工作,您可以保留第二個請求,並檢查message參數的值,並根據該值返回相關響應。

public ActionResult SelectInstitutionToEdit(string message) 
{ 
    if(String.IsNullOrEmpty(message)) 
    { 
    // to do :Return something 
    } 
    // to do :Return something 
} 

這將爲yourSite/yourController/SelectInstitutionToEdit工作,yourSite/yourController/SelectInstitutionToEdit?message=hello

1

考慮更改簽名:

public ActionResult SelectInstitutionToEdit(){...} 

公衆的ActionResult SelectInstitutionToEditWithString(字符串消息){...}

1

儘管編譯器會運行此代碼時沒有任何錯誤,因爲方法超載但MVC框架不允許它。但是你可以使用ActionName屬性:

public ActionResult SelectInstitutionToEdit(){...} 

[ActionName("SelectInstitutionToEditWithParams")] 
public ActionResult SelectInstitutionToEdit(string message){...} 

那麼你應該把它與它的新名稱。就像這樣:

@using (Html.BeginForm("SelectInstitutionToEditWithParams", "yourController")) 
{ 

} 
1

使用[ActionName("SomeOtherName")]用於重載行動方法如果同一GET/POST調用。

相關問題