2015-10-14 55 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(); 
}