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

    }

しかし、スクリプトが「EditOrderError」ビューを見つけようとするため、404 が返されます。

4

2 に答える 2

2

ASP.NET MVC では、別の HTTP 動詞を処理しない限り、コントローラー アクション をオーバーロードすることはできません。

C# 4 を使用していると仮定すると、1 つの可能な回避策は、きれいなものではありませんが、1 つのコントローラー アクションでオプションのパラメーターを使用することです。

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 に答える