Asp.net MVC - 表单未发送到控制器

时间:2016-04-21 12:00:00

标签: c# html asp.net-mvc

在Asp.net MVC视图中,我创建了一个带有输入字段的表单。

用户设置名字(或部分名称),按下提交按钮。

这是表单部分:

<div> 
    <form action="SearchCustomer" methos="post">
        Enter first name: <input id="Text1" name="txtFirstName" type="text" />
        <br />
        <input id="Submit1" type="submit" value="Search Customer" />
    </form>
</div>

这是Controller中的SearchCustomer,它从表单中获取数据:

CustomerDal dal = new CustomerDal();
string searchValue = Request.Form["txtFirstName"].ToString();
List<Customer> customers = (from x in dal.Customers 
                            where x.FirstName.Contains(searchValue)
                            select x).ToList<Customer>();
CustomerModelView customerModelView = new CustomerModelView();
customerModelView.Customers = customers;

return View("ShowSearch", customerModelView);

当我运行程序并输入名字(&#34; Jhon&#34;例如)时,代码返回到SearchCustomer函数,但Request.Form为空。

为什么呢?

感谢。

4 个答案:

答案 0 :(得分:1)

您需要修改代码:

您需要在此处提供一个操作名称,该名称应在您的控制器(SearchController)中定义,其名称与&#39; ActionName&#39;相同。你会输入以下代码。 如果SearchController是您的操作名称,则提供可以执行操作的控制器。

<div> 
    <form action="SearchCustomer/<ActionName>" method="post">
       Enter first name: <input id="Text1" name="txtFirstName" type="text" />
       <br />
       <input id="Submit1" type="submit" value="Search Customer" />
   </form>
</div>

使用Html.BeginForm:

  @using (Html.BeginForm("<ActionName>","<ControllerName>", FormMethod.Post))
  {
      Enter first name: <input id="Text1" name="txtFirstName" type="text" />
       <br />
       <input id="Submit1" type="submit" value="Search Customer" />
  }

答案 1 :(得分:0)

您的method拼错了不应该是methos而是method,如下所示:

 <form action="SearchCustomer" method="post">
            ....
    </form>

答案 2 :(得分:0)

如果您View的名称与ActionResult方法的名称相同,请尝试以下操作:

@using(Html.BeginForm())
{
    ... enter code
}

默认情况下,它已经是POST方法类型,并且会定向到ActionResult。有一点需要确定:您需要在[HttpPost]方法上使用ActionResult属性,以便表单知道要去哪里:

[HttpPost]
public ActionResult SearchCustomer (FormCollection form)
{
     // Pull from the form collection
     string searchCriteria = Convert.ToString(form["txtFirstName"]);
     // Or pull directly from the HttpRequest
     string searchCriteria = Convert.ToString(Request["txtFirstName"]);
     .. continue code
}

我希望这有帮助!

答案 3 :(得分:0)

  

在控制器上设置[HttpPost]。

[HttpPost]
 public ActionResult SearchFunction(string txtFirstName)
  {
          CustomerDal dal = new CustomerDal();
         string searchValue = txtFirstName;
         List<Customer> customers = (from x in dal.Customers 
                            where x.FirstName.Contains(searchValue)
                            select x).ToList<Customer>();
         CustomerModelView customerModelView = new CustomerModelView();
        customerModelView.Customers = customers;
       return View("ShowSearch", customerModelView);
  }