我是MVC的新手,我会尽力仔细阐述我的问题。 我有一个带有2个Action方法的控制器,其中一个是POST方法:
[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);
}
现在发布表单时,用户填写的所有数据都不会保留。 我想用他的发布数据和填充向用户显示相同的表单 缺少完成注册的细节。
很抱歉,如果这是一个非常基本的问题。如何在同一视图上保留数据。
答案 0 :(得分:2)
而不是return RedirectToAction("Register", model);
使用return View(model);
。
Here是一个很好的博客,解释了这些差异。
答案 1 :(得分:1)
首先使用 DataAnnotations [必需] 编辑您的模型,您不希望为空:
[必需(ErrorMessage =&#34;名称不能为空。&#34;)]
public string Name {get;组; }
现在编辑你的控制器。
if (ModelState.IsValid)
{
//insert data in tables
RedirectToAction("Register");
}
else
{
return View();
}