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

C# 如何在MVC中创建带有验证的GET表单,c#,asp.net-mvc,C#,Asp.net Mvc,我在试图表达这个看似简单的问题时遇到了一个真正的问题 我有一个视图,其中包含一个表单,在视图顶部有几个搜索字段,提交表单后,搜索结果将显示在同一个视图中 我有一个单一的HTTPGET控制器方法,该方法将表单字段作为参数,如果它是由用户提交的,它会将模型传递回视图,并显示结果,并用他们填写的内容预填充搜索表单 如何判断页面是否加载了默认参数,以及是否有人实际提交了表单 什么是最好的实现方式? < P>如果我正确地理解了你的问题,那么我认为你需要考虑HTTPGET属性: 以及HttpPost属性:

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

我有一个视图,其中包含一个表单,在视图顶部有几个搜索字段,提交表单后,搜索结果将显示在同一个视图中

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

如何判断页面是否加载了默认参数,以及是否有人实际提交了表单


什么是最好的实现方式?

< P>如果我正确地理解了你的问题,那么我认为你需要考虑HTTPGET属性:

以及HttpPost属性:

假设您有一个create方法。Http方法如下所示:

[HttpGet]
public ActionResult Create()
{

}
[HttpPost]
public ActionResult Create(Person p)
{
//Logic to insert p into database.  Could call an application service/repository to do this
}
post方法如下所示:

[HttpGet]
public ActionResult Create()
{

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

重定向到操作
解决问题

提交数据后,可以返回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(...);
}

为什么不能有两种获取方法,一种是不接受参数的,另一种是接受参数的?听起来是学习Ajax的好时机。这和他得到的答案是一样的,他不喜欢。@Fran,我不明白你的意思。你能澄清一下吗?谢谢。请看我链接的问题。OP试图用一个动作做太多的事情,这让他们感到悲伤。他对这个问题有一个答案,能准确地告诉他你的建议。我没看到。我将投票结束这个问题。这与我的答案相同。不是吗?@w0051977而已,我跟你用的是同一个动作名。您的答案注意http属性,但我的答案注意重定向到操作。我认为答案不一样