2009-08-31 53 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

相关问题