我无法将文本框数据传递给控制器操作参数。
我正试图让网址看起来像:
http://localhost:51124/gifts?searchTerm=test
但是当我在文本框中输入文本时,我得到一个看起来像的网址:
http://localhost:51124/gifts
以下是我对该路线的代码:
routes.MapRoute("Gifts",
"gifts",
new { controller = "Gifts", action = "Search" });
这里是带有文本框和按钮的页面代码,用于提交文本框数据:
<form method="GET">
<input type="search" name="searchTerm"/>
<input type="button" value="Search By Category" onclick="location.href='@Url.Action("Search", "Gifts")'" />
</form>
这里是我试图将数据传递给失败的控制器的代码:
public ActionResult Search(string searchTerm = null)
{
var model = db.Gifts.ToList();
return View(model);
}
“searchTerm”永远不会获取我传入文本框的任何参数。它总是空的。
答案 0 :(得分:3)
使用输入(即搜索框)在视图中创建一个表单元素,该输入具有与参数匹配的名称属性和提交按钮。
@using (Html.BeginForm("Search", "Gifts") {
<input type='text' name='searchTerm' value='' />
<input type='submit' value='search' />
}
这将回发到Gifts控制器中的Search方法,将搜索框的值传递给参数'searchTerm'
答案 1 :(得分:0)
你必须使用jquery构建它。在输入中添加一个类以用作选择器
<input type="search" name="searchTerm" class="txtSearch" />
<input type="button" value="Search By Category" class="btnSearch" />
然后在你的脚本中
$('.btnSearch').on('click', function(){
var url = '@Url.Action("Search", "Gifts", new { searchTerm = "----" })'.replace("----", $('.txtSearch').val());
window.location(url);
});