2014-02-23 62 views
0

在@OBJECT中,我試圖將字符串形式的搜索內容傳遞給搜索控制器。我的問題是如何從父文件夾中獲取文本框的內容,或者如果沒有使用按鈕或外部鏈接來處理此問題的更好方法,請提前致謝。ASP.NET包含帶動作的字符串

<form class="searchBarForm" method="post" 
action="@Url.Action("Search", "Search", @OBJECT)> 
     @Html.TextBox("value", null, 
     new { @id = 'search_content'}); 
</form> 

更新

的@ Url.Action(視圖,控制器,@OBJECT),該@OBJECT是routeValue控制器和我的應用程序只需要它是一個字符串,從文本框的內容中獲得它的價值。

爲了便於閱讀,我刪除了多餘的代碼。

+0

我不明白你在問什麼。 –

+0

@ Url.Action(VIEW,CONTROLLER,@OBJECT),@OBJECT是控制器的路徑值,對於我的應用程序,我只是需要它是一個字符串,它從文本框的內容中獲取它的值。 – IntriquedMan

+0

@ Url.Action在運行時在SERVER上進行計算,您無法獲取文本框的內容值並使用剃鬚刀更新網址。你將不得不使用javascript –

回答

1

你做錯了。在MVC中,你不需要手動做這樣的事情。表單值 - 在這種情況下,文本框的內容 - 將自動發佈,如果綁定到模型,控制器操作將會收到它們。

例如爲:

public class SearchModel 
{ 
    public string Query { get; set; } 
} 

public class SearchController 
{ 
    [HttpPost] 
    public ActionResult Search(SearchModel data) 
    { 
     ... 
    } 
} 

@model SearchModel 
@using(Html.BeginForm("Search", "Search", FormMethod.Post)) 
{ 
    @:Html.EditorFor(model => model.Query); 
} 
0

你需要這樣

@Url.Action("Search", "Search", new {routeParameter = routeValue}) 
+0

你必須已經知道你傳遞的價值是什麼。 –

0

以上回答的作品做到這一點,但我結束了不同的解決方案。 最初不瞭解FormCollection對象以及如何根據名稱訪問變量。

// The controller 
[HttpPost] 
public ActionResult Search(FormCollection collection) 
{ 
    string searchQuery = collection["searchQuery"]; 
    ... do those swweet sweet calcs ... 
} 

// The view 
<form class="searchBarForm" method="post" [email protected]("Search", "Search")> 
     @Html.TextBox("searchQuery", null, new { @placeholder = "Search . . .", @class = "form-control searchBar", @id = "search_contents"}) 
</form>