0

我无法将文本框数据传递给控制器​​操作参数。

我试图让网址看起来像:

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”永远不会得到我传递到文本框中的任何参数。它始终为空。

4

2 回答 2

3

在您的视图中创建一个表单元素,其中包含一个与参数匹配的名称属性和一个提交按钮的输入(即搜索框)。

@using (Html.BeginForm("Search", "Gifts") {
  <input type='text' name='searchTerm' value='' />
  <input type='submit' value='search' />
}

这将回传到 Gifts 控制器中的 Search 方法,将搜索框的值传递给参数“searchTerm”

于 2014-05-28T04:21:50.393 回答
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);
});
于 2014-05-28T03:40:58.920 回答