我在数据库中提交一些数据,提交后我想显示相同的页面。但是我正在查看文本框值不为空的页面。
ModelState.Clear((;
我曾经清除过文本框。
但文本框值仍然存在。 请建议我在 MVC3 中提交后清除模型。
public ActionResult AddNewCategory(CategoryViewModel model) {
if (ModelState.IsValid) {
int result = 0;
var categoryEntity = new Category {
CategoryName = model.CategoryName, CategorySlug = model.CategorySlug
};
result = Convert.ToInt32(_categoryRepository.AddNewCategory(categoryEntity));
if (result > 0) {
ModelState.Clear();
}
}
return View(model);
}
您得到的是相同的模型,因为您将其传递给视图View(model)
。您在这里有几个选项:传递空模型,或重定向到发布操作的 get 变体。
1(
if (ModelState.IsValid)
{
//saving
if (result > 0)
{
ModelState.Clear();
return View(new CategoryViewModel());
}
}
2(
if (ModelState.IsValid)
{
//saving
if (result > 0)
{
return RedirectToAction("AddNewCategory");
}
}
PS:我强烈建议使用第二种方法,因为您可能希望进行其他数据库调用来构建模型,并且您不希望在多个地方执行此操作。
以最简单的方式尝试一下
if(ModelState.IsValid)
{
//code here to save data to database
db.SaveChanges();
ModelState.Clear();
}
return view(new CategoryViewModel());
Hear is do modelState.Clear((
ModelState.Clear(( 用于清除错误,但也用于 强制 MVC 引擎重新生成要传递给视图的模型。
因此,就像您的情况一样@Vsevolod Goloviznin建议您可以使用:
return View(new CategoryViewModel());
具有空值的视图