TextBox为默认值,并在验证失败后保留已编辑的值

时间:2017-03-10 08:54:11

标签: c# .net asp.net-mvc razor

Razor代码如:

@Html.TextBoxFor(Model => Model.Name, new { @Value = student.t_Name })

我在Controller中使用.NET MVC的模型验证,

    if (ModelState.IsValid)
    {
        return RedirectToAction("B");
    }
    else 
    {
        return View(); // when validation failed
    }

我的情况是我有一个编辑功能,例如: 原始数据:

birthday: 1992-05-26

编辑后:

birthday: 1992-05-32

我将此提交给Controller并进行模型验证后,它将验证失败,并返回上一个视图(表单提交前的视图), 我想要它显示

birthday:1992-05-32

而不是

birthday:1992-05-26

2 个答案:

答案 0 :(得分:1)

您应该像这样设置进入控制器的ViewModel值:

public ActionResult YourControllerMethod(YourViewModel model)
{
    if (ModelState.IsValid)
    {
        return RedirectToAction("B");
    }
    else 
    {
        ViewData.Model = model; //where model is your controller model
        return View(); // when validation failed
    }
}

答案 1 :(得分:1)

返回时需要将当前发布的模型实例传递回视图查看类似:

的内容
public ActionResult YourAction(SomeModel model)
{
   if (ModelState.IsValid)
   {
     return RedirectToAction("B");
   }
   else 
   {
    return View(model);
   }

}