如何在MVC中创建带有验证的GET表单

时间:2017-09-06 18:45:54

标签: c# asp.net-mvc

我在试图阐明这个看似简单的问题时遇到了一个真正的问题。

我有一个视图,其中包含一个在视图顶部有一些搜索字段的FORM,并且在提交表单后,该搜索的结果会显示在同一视图中。

我有一个HTTPGET控制器方法,它将表单字段作为参数,如果它是由用户提交的,它会将模型传递回视图,并显示结果并使用它们预先填充搜索表单填写完毕。

如何判断页面是否加载了默认参数与实际提交表单的人。

实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题,那么我认为你需要考虑HttpGet属性:

https://msdn.microsoft.com/en-us/library/system.web.mvc.httpgetattribute(v=vs.118).aspx

和HttpPost属性:

https://msdn.microsoft.com/en-us/library/system.web.mvc.httppostattribute(v=vs.118).aspx

假设你有一个创建方法。 Http方法如下所示:

[HttpGet]
public ActionResult Create()
{

}

并且post方法如下所示:

[HttpPost]
public ActionResult Create(Person p)
{
//Logic to insert p into database.  Could call an application service/repository to do this
}

答案 1 :(得分:0)

RedirectToAction解决问题。

您可以在提交数据后返回get方法,并使用默认值

填充视图
[HttpGet]
public ActionResult Create()
{
   // fill model to default data
   return view(model);
}

[HttpPost]
public ActionResult Create(Person p)
{     
   //do your stuff save data 
   return RedirectToAction("Create");      
}

or

[HttpPost]
public ActionResult Create(Person p)
{     
   if(...)
   { 
     //do your stuff  any logic
     return RedirectToAction("Create");
   }

   //do your stuff 

     return view(...);
}