我有兩種方法(操作)具有不同的選項格式,但是當我運行它時,我被告知它們不明確。方法如下所示。控制器中的兩個操作與不同的參數設置衝突
public ActionResult SelectInstitutionToEdit(){...}
public ActionResult SelectInstitutionToEdit(string message){...}
我有兩種方法(操作)具有不同的選項格式,但是當我運行它時,我被告知它們不明確。方法如下所示。控制器中的兩個操作與不同的參數設置衝突
public ActionResult SelectInstitutionToEdit(){...}
public ActionResult SelectInstitutionToEdit(string message){...}
是的。你不能有多個同名的動作方法(&相同的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
考慮更改簽名:
public ActionResult SelectInstitutionToEdit(){...}
公衆的ActionResult SelectInstitutionToEditWithString(字符串消息){...}
儘管編譯器會運行此代碼時沒有任何錯誤,因爲方法超載但MVC框架不允許它。但是你可以使用ActionName
屬性:
public ActionResult SelectInstitutionToEdit(){...}
[ActionName("SelectInstitutionToEditWithParams")]
public ActionResult SelectInstitutionToEdit(string message){...}
那麼你應該把它與它的新名稱。就像這樣:
@using (Html.BeginForm("SelectInstitutionToEditWithParams", "yourController"))
{
}
使用[ActionName("SomeOtherName")]
用於重載行動方法如果同一GET/POST調用。
你可以在這裏找到答案.. [http://stackoverflow.com/questions/436866/can-you-overload-controller-methods-in-asp-net-mvc](http://stackoverflow.com /問題/ 436866 /罐,你超載控制器的方法,在-ASP淨MVC) –