我有这个方法调用另外两个方法,但是当执行代码时我出错了。
public ActionResult CreateOrder(string action, string type)
{
/*Some Code*/
if(MyObject.isOk){
return RedirectToAction("EditOrder", new { code = ErrorCode, libelle = Description });
}else{
return RedirectToAction("EditOrder", new { nordre = NoOrdre });
}
}
public ActionResult EditOrder(string nordre)
{
}
[ActionName("EditOrder")]
public ActionResult EditOrderError(string code, string libelle)
{
}
但是我得到了404因为脚本试图找到“EditOrderError”视图。
答案 0 :(得分:2)
ASP.NET MVC不允许您overload controller actions ,除非他们handle different HTTP verbs。
假设您正在使用C#4,一种可能的解决方法(虽然不是很好)是在单个控制器操作上使用可选参数:
public ActionResult EditOrder(string nordre = null, string code = null, string libelle = null)
{
if (nordre != null)
{
// ...
}
else if (code != null && libelle != null)
{
// ...
}
else
{
return new EmptyResult();
}
}
答案 1 :(得分:1)
您不能使用相同的HTTP方法/动词(GET / POST / etc)
重载控制器操作如果我需要控制器操作来使用.NET在标识符中不允许的字符,我只会使用ActionNameAttribute
。喜欢使用破折号(/ controller / create-user)。 Like this one.