【发布时间】:2016-04-06 04:22:27
【问题描述】:
我无法将数据从表单发布到控制器操作。我已经使用 HTML.BeginForm() 创建了表单,并且我有一个控制器,当我手动创建查询字符串时它可以正常工作,但我不明白如何使表单与我的控制器操作一起工作。
<form class="navbar-form navbar-left">
<div class="form-group>
@using (Html.BeginForm("GeneralSearch", "Search", FormMethod.Post))
{
@Html.TextBox("searchString")
<button type="submit" class="default">Submit</button>
}
</div>
</form>
然后在我的控制器中,我目前有 ASP.NET 自动放置在那里的HttpGet 属性。但是,如果我将其更改为HttpPost,问题仍然存在。
[HttpGet]
public ActionResult GeneralSearch(string searchString)
{
return View("SearchResult", viewModel);
}
当我输入文本并提交表单时,网络请求被发送到:
http://localhost:64562/?searchString=test
它只是加载默认控制器和操作,而不是我在using 语句中指定的“搜索”控制器。如何正确发布到特定操作?
【问题讨论】:
-
查看表单呈现的 html。您需要输入
name="searchString"才能使绑定生效。此外,表单操作是 Post,但您的操作标记为[HttpGet]。 GET 参数通过查询字符串传递,POST 参数通过请求正文传递。 -
Textbox方法中给的名字不就是HTML中使用的名字吗?
-
@user9993 - 你最好完成一个在线教程或做一些阅读。像Getting Data From View to Controller in MVC 这样的东西。另一种方法是煞费苦心地一次又一次地绊倒它。
标签: c# asp.net-mvc