1

コントローラーでコードを実行しない "return view()" に問題があります。

私はこのコードを持つコントローラを持っています:

public class BrokerController : BaseController
{

    public ActionResult BestallMaklarBild()
    {
        return View(new BestallMaklarBildViewModel());
    }

    [HttpPost]
    public ActionResult BestallMaklarBild(FormCollection collection)
    {
        try
        {
            //Some code                
            return View("MaklarBildBestalld",new MaklarBildBestalldViewModel());
        }
        catch
        {
            return View(new BestallMaklarBildViewModel());
        }
    }

    public ActionResult MaklarBildBestalld()
    {
       //Some code     
        return View(new MaklarBildBestalldViewModel());
    }
}

コントローラー「BestallMaklarBild」に投稿してから を返そうとすると、view("MaklarBildBestalld",new MaklarBildBestalldViewModel())「MaklarbildBestalld」のコードが実行されません。そのため、モデルがビューに返されたときにデータが含まれていないため、ビューにmodel.something = nullデータを出力しようとすると、ビューにエラーが表示されます。

何が間違っているのかわかりません。

4

2 に答える 2

2

それは正常です。コードを実行する場合は、このコントローラーアクションにリダイレクトする必要があります。

try
{
    //Some code                
    return RedirectToAction("MaklarBildBestalld", new { id = "some id" });
}
catch
{
    return View(new BestallMaklarBildViewModel());
}

これで、アクションが実行されます。

public ActionResult MaklarBildBestalld(string id)
{
    //Some code     
    return View(new MaklarBildBestalldViewModel());
}

正しいワークフローは次のとおりです。

  1. BestallMaklarBildPOSTコントローラーアクションが呼び出され、ビューモデルが渡されます
  2. このコントローラーアクションは、モデルを永続化しようとし、成功した場合はMaklarBildBestalldコントローラーアクションにリダイレクトして、このアクションがモデルを取得できるように、このモデルのクエリ文字列として一意の識別子を渡します。失敗した場合は、フォームを再表示するだけで、ユーザーは自分が行ったエラーを修正したり、リクエストの処理に問題があったというエラーメッセージを表示したりできます。
于 2012-08-18T13:30:01.293 に答える
0

ビューのパラメーターにジェネリック型としてモデルが含まれていることを確認する必要があります。

于 2012-08-18T13:29:34.993 に答える