为了使 MVC4 Razor 上的所有字段在加载时为空(例如第一次加载或再次返回页面后),最有效的方法是什么?如果可能的话,您能否建议我一种借助 Razor 属性而不是使用 Javascript/jQuery 的方法。
问问题
16107 次
3 回答
13
弄清楚你想要做什么有点困难,但让我们看看我是否能提供帮助。
首先,如果您只是想在表单发布后清除表单的值,您可以这样做:
[HttpPost]
public ActionResult Index(ViewModel model)
{
ModelState.Clear();
model = new ViewModel();
return View(model);
}
仅仅创建一个新ViewModel
的是不够的,因为ModelState
字典会尝试用旧值重新填充表单。这可以满足您的需求,但并没有真正利用 MVC 来满足您的需求。
更好的方法是重定向回用于显示表单的操作。像这样的东西:
public ActionResult Create()
{
var model = new ViewModel();
return View(model);
}
这只是将一个空模型传递给您的表单。用户填写表单并将其发送回服务器后,您可以像这样处理它:
[HttpPost]
public ActionResult Create(ViewModel model)
{
if (ModelState.IsValid)
{
// Form data is valid so redirect back to display the form again
return RedirectToAction("Create");
}
// If we get here, redisplay the form with the fields filled in
// and errors shown
return View(model);
}
于 2013-10-29T13:56:22.970 回答
5
只需调用 a ModelState.Clear()
will 就可以了。您不必再次实例化视图模型。
于 2013-10-29T14:05:48.093 回答
0
视图显示(或收集)有关模型的信息。
因此,如果您传递一个 Empty 模型(即:null 或空白或默认值的属性),它将“清除所有字段”。
您所要做的就是再次调用显示视图的操作,现在传递一个空模型。
编辑: 您可以在 javascript 中执行此操作,但是您必须复制并维护默认值的逻辑。
于 2013-10-29T13:54:29.867 回答