質問

I have this method who call 2 others methods but i've an error when a execute that code.

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)
{

    }

But i get an 404 because the script try to find the "EditOrderError" view.

役に立ちましたか?

解決

ASP.NET MVC doesn't allow you to overload controller actions unless they handle different HTTP verbs.

Assuming you're using C# 4, one possible workaround, albeit not a pretty one, is to use optional parameters on a single controller action:

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();
    }
}

他のヒント

You cannot overload controller actions using the same HTTP Method/Verb (GET/POST/ etc)

I would only use ActionNameAttribute if I need the controller action to have characters that .NET doesn't allow in an identifier. Like using dashes (/controller/create-user). Like this one..

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top