2009-08-31 56 views
6

如何檢索asp.net mvc中的文本框的值以將值存儲到某個變量?從提交的asp.net mvc文本框獲取價值點擊

我在索引視圖頁上有一個像這樣的文本框<%=Html.TextBox("testbox") %>

我有這樣<input type="submit" />

一個按鈕,我使用的是當你打開一個新的MVC應用程序,它自帶的默認視圖頁面。

謝謝。

回答

8

在您的控制器中;

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Search(FormCollection collection) 
{ 
    String g = collection["textFieldname"] 
} 

或者你可以使用;

TryUpdateModel(modelName); 

以上是首選解決方案。如果您需要更多有關TryUpdateModel的信息,請發表評論,我會爲您補充。

編輯:

而不是解釋它讓我簡單地告訴你;

在你的控制器:

public class MyFormViewModel 
{ 
    public string myInput {get; set;} 
} 

public ActionResult Search() 
{ 
    MyFormViewModel fvm = new MyFormViewModel(); 
    return View(fvm); 
} 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Search(FormCollection collection) 
{ 
    MyFormViewModel fvm = new MyFormViewModel(); 
    TryUpdateModel<MyFormViewModel>(fvm); 

    string userInput = fvm.myInput; 
} 
在視圖

然後;

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<YOURNAMESPACE.Controllers.MyFormViewModel>" %> 

<%= Html.TextBox("myInput", Model.myInput) %> 

注意兩件事。

頁面繼承自您在控制器中定義的模型/類。不是最好的地方,但它會做的一個例子。

另一件事是文本框的名稱與模型中的屬性相同。在這種情況下myInput。

當控制器執行UpdateModel時,它會反射出來,並將文本框名稱與表單視圖模型中字段的名稱進行匹配。

有意義嗎?

EDIT 2

而且不要忘了包裹在按鈕和你的領域;

<% using (Html.BeginForm()) {%> 
+0

嗨,感謝您的答覆......別告訴我tryupdatemodel(MODELNAME)如何與視圖上的文本框任何關係...謝謝 – Josh 2009-08-31 02:35:17

+0

通過它看上去....我的理解.. .. 但這裏... <%= Html.TextBox(「myInput」,Model.myInput)%>,Model.myInput會自動映射到myFormViewModel.myinput?我認爲這就是你指出的,它通過獲得相關的類名來自動使用反射來解決......稍微旋轉頭,因爲你在視圖上稱它爲「Model.MyInput」......但我想我可能會寫代碼它會工作。 – Josh 2009-08-31 02:55:29

+0

我的意思是,它將如何知道哪個模型......以及哪裏...那正是我想要的 – Josh 2009-08-31 02:57:50

相關問題