1

我有这个方法可以调用其他 2 个方法,但是在执行该代码时出现错误。

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”视图。

4

2 回答 2

2

ASP.NET MVC 不允许您重载控制器操作 ,除非它们处理不同的 HTTP 动词

假设您使用的是 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();
    }
}
于 2013-06-18T08:38:34.807 回答
1

您不能使用相同的 HTTP 方法/动词(GET/POST/ 等)重载控制器操作

只有ActionNameAttribute当我需要控制器操作具有.NET 不允许在标识符中使用的字符时,我才会使用它。就像使用破折号(/controller/create-user)一样。像这个。.

于 2013-06-18T08:43:32.160 回答