如何在MVC3中的数据库中提交数据后清除模型

时间:2014-12-21 11:39:55

标签: asp.net-mvc asp.net-mvc-3

我在数据库中提交一些数据,提交后我想显示相同的页面。但我正在查看文本框值不为空的页面。

  

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);
}

3 个答案:

答案 0 :(得分:15)

您正在获得相同的模型,因为您已将其传递到视图View(model)。这里有几个选项:要么传递空模型,要么重定向到后期操作的获取变体。

<强> 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:我强烈建议使用第二种方法,因为您可能希望进行其他数据库调用来构建模型,而您不想在多个位置执行此操作。

答案 1 :(得分:2)

以最简单的方式尝试

using(Impersonation.LogonUser(domain, user, password, LogonType.NewCredentials))
{

ITerminalServicesManager manager = new TerminalServicesManager();

using (ITerminalServer server = manager.GetRemoteServer(server))
    {
    server.Open();

        foreach (ITerminalServicesSession session in server.GetSessions())
        {   
        //Do your stuff here.
        }
    }
}

答案 2 :(得分:1)

Hear is ModelState.Clear()

是什么
  

ModelState.Clear()用于清除错误,但它也用于   强制MVC引擎重建要传递给View的模型。

因此,在你的情况下@Vsevolod Goloviznin建议你可以使用:

return View(new CategoryViewModel());

使用空值视图