如何在asp.net mvc中检索文本框的值以将值存储到某个变量?
我在索引视图页面上有一个像<%=Html.TextBox("testbox") %>
这样的文本框。
我有一个像<input type="submit" />
我正在使用打开新的mvc应用程序时出现的默认视图页。
感谢。
答案 0 :(得分: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时,它会反映出事物,并将文本框名称与表单视图模型中字段的名称相匹配。
有意义吗?
编辑2
另外不要忘记将按钮和字段包裹在;
中<% using (Html.BeginForm()) {%>