将搜索查询发送到Actionresult

时间:2015-10-14 09:38:40

标签: html asp.net-mvc razor get

我在Umbraco 7中使用Examine来搜索我的网站索引。它工作正常,但我想通过在我的数据库中存储搜索查询来跟踪人们搜索的内容。我已经设置了ActionResult,它在Controller名为SearchRecordSurfaceController的表中将术语插入到我的表中。

现在,我在Razor Partial View中有一个搜索框和按钮,如下所示:

@model MyCompany.Models.SearchModel  
    <form action="@Url.Action("GetSearchResults", "SearchRecord")" method="get">
        <input type="text"
               id="searchField"
               name="SearchInput"
               value=""             
               placeholder="site search" />

        <button name="Search" type = submit 
                              value = GetSearchResults 
                              class="btnSubmit">Search</button>
        <input type="submit" 
               value="Search" 
               class="btnSubmit" 
               title="Search website" />  
    </form>   

我想将搜索框中的任何用户类型发送到我的ActionResult&#34; GetSearchResults&#34;在我的Controller&#34; SearchRecordSurfaceController&#34;。我知道您可以像Url.Action一样发送参数:

@Url.Action("GetSearchResults", "SearchRecord", new {myParam = myValue})

但我不确定如何传递searchField输入中的值。

如何从用户搜索我的ActionResult方法中获取文字?

2 个答案:

答案 0 :(得分:2)

您只需要在操作方法上使用与搜索输入的name匹配的字符串参数:

public ActionResult GetSearchResults(string searchInput) { ... }

<input type="text"
       id="searchField"
       name="searchInput"
       value=""             
       placeholder="site search" />

或者,或者,具有匹配属性的模型类:

public class SearchViewModel
{
    public string SearchInput { get; set; }
}

public ActionResult GetSearchResults(SearchViewModel model) { ... }

答案 1 :(得分:1)

您可以使用FormCollection类型

e.g。

public ActionResult SearchRecordSurfaceController(FormCollection form)
{
    var searchText = form["searchField"].ToString();
}