2015-10-14 37 views
0

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

现在,我有这样的剃刀局部视图搜索框和按钮:

@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“GetSearchResults”在我Controller“ SearchRecordSurfaceController”。我知道你可以用Url.Action这样一起发送参数:

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

,但我不知道如何从searchField输入传递值。

如何从用户搜索到我的ActionResult方法的文本?

+0

你最终得到这个工作?我不知道如何做几乎相同的事情......我试图将一个输入表单搜索框的搜索查询“q”传递给Umbraco中的另一个页面...... – Bobi

+0

是的,它的工作原理。 @Ant P的答案帮助了我 –

回答

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

你可以使用FormCollection类型

例如

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