1

リクエストの get 部分 (一般的な URL) と投稿用の 2 つのアクションを使用しています。

投稿に ModelState エラーがある場合、エラーを表示するために表示したいのですが、URL を一般的な URL にしたいと考えています。

したがって、これは現在起こっていることです:

Get: http://foo.com/mycontroller  
Post: http://foo.com/mycontroller/specificviewaction (validation error occurs)  
Resultant url is: http://foo.com/mycontroller/specificviewaction

http://foo.com/mycontrollerにしたいのですが、適切なエラーです。

これが私の現在のコードです:

    public ActionResult Index()
    {
        // ... do stuff
        return View("specificviewaction ", model);
    }

    [HttpPost] 
    public ActionResult specificviewaction(Model model)
    {
        if (ModelState.IsValid)
        {
        // ... do stuff
        }

        return View("specificviewaction", model);
    }

実際の Index ビューはなく、特定のビューのみであることに注意してください。

4

2 に答える 2

0

remove Index アクション - 必要ありません。これの代わりに、もう 1 つ特定のビュー アクションを追加するだけですが、Get の場合は次のようになります。

[HttpGet]
public ActionResult specificviewaction()
{
    //do smth
    return View("specificviewaction", model);
}

次のルーターを Global.asax (既定のルートの前) に追加します。

routes.MapRoute("MyControllerRoute", // Route name
                "MyController/{action}/{id}", // URL with parameters
                new { controller = "MyController", action = "specificviewaction", id = UrlParameter.Optional } // Parameter defaults);

この URL の後、「/MyController/」はデフォルトで「specificviewaction」を指します。

于 2012-08-23T02:54:38.743 に答える
0

これが私がやったことです。

デフォルトの実装に従って、ルーティング テーブルを残しました。

次に、モデル タイプごとに、どのタイプのフォームに非表示フィールドを配置します。

投稿では、それがどのタイプであるかを確認しTryUpdateModel、モデルのインスタンスを正しいフォーム値で更新するために使用します。

成功した場合は、適切なエラーを返すことができます。

私はそれを考えすぎようとしていましたが、最も単純なアプローチが最善でした。

于 2012-08-30T04:18:00.593 に答える