2017-08-23 6 views
0

私はMVCを初めて使用しています。私は慎重に問題を詳述しようとします。フォームがポストされたときModelState.IsValidがfalseを返す場合、ユーザーが投稿したデータを含む同じビューを読み込みます。

[AllowAnonymous] 
public ActionResult Register() 
{ 
    RegisterViewModel registerModel = new RegisterViewModel(); 
    //Some Code to populate dropdowns for user to select 
    return View(registerModel); 
} 

[HttpPost] 
[AllowAnonymous] 
[ValidateAntiForgeryToken] 
public async Task<ActionResult> Register(RegisterViewModel model) 
{ 
    try 
    { 
     if (ModelState.IsValid) 
     { 
      //insert data in tables 
      RedirectToAction("Register"); 
     } 
     AddErrors(result); 
    } 
    catch (Exception ex) 
    { 
     ModelState.AddModelError("", "Error Processing Your Request"); 
    } 

    // If ModelState.IsValid returns false show the form with posted data by user 
    return RedirectToAction("Register", model); 
} 

今すぐユーザーが満たされたすべてのデータは保持されません。 私はPOSTメソッドであるそのうちの一つ2つのアクションメソッドとコントローラーを持っています。 投稿したデータでユーザーに同じフォームを表示し、 の情報が不足していると登録を完了します。

申し訳ありませんが、これは非常に基本的な質問です。同じビューにデータを永続化する方法

+0

RedirectToAction( "Register"モデル)は、ビューを返し、検証エラー( 'RedirectToAction(...) 'ではなく)を表示するために' return View(model); 'を使用します。 –

+0

return同じ関数をもう一度 – Musab

+0

私はビューにロードするEditorTemplateを持っていて、View(model)を返します。 ** 'EmploymentType'というキーを持つViewDataアイテムは 'System.Int32'タイプですが、 'IEnumerable 'タイプでなければなりません。** – LearningPal

答えて

1

最初の編集あなたが好きな空になりたくないDataAnnotations [必須]であなたのモデル:
[必須(にErrorMessage =「名前を空にすることはできません。」)]
公共の文字列名{ 取得する;セット; }

ここでコントローラをいくつか編集してください。代わりにreturn RedirectToAction("Register", model);使用return View(model);

if (ModelState.IsValid) 
{ 
    //insert data in tables 
     RedirectToAction("Register"); 
} 
else 
{ 
return View(); 
} 
2

Hereは、違いを説明する良いブログです。

関連する問題