在提交点击时从asp.net mvc文本框获取价值

Jos*_*osh 6 c# asp.net-mvc

如何在asp.net mvc中检索文本框的值以将值存储到某个变量?

<%=Html.TextBox("testbox") %>在索引视图页面上有这样的文本框 .

我有一个像这样的按钮 <input type="submit" />

我正在使用打开新的mvc应用程序时出现的默认视图页面.

谢谢.

gri*_*egs 8

在你的控制器;

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

或者你可以使用;

TryUpdateModel(modelName);
Run Code Online (Sandbox Code Playgroud)

以上是首选解决方案.如果您需要有关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;
}
Run Code Online (Sandbox Code Playgroud)

然后在你看来;

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

<%= Html.TextBox("myInput", Model.myInput) %>
Run Code Online (Sandbox Code Playgroud)

注意两件事.

该页面继承自控制器中定义的模型/类.不是最好的地方,但作为一个例子,它会做.

另一件事是文本框的名称与模型中的属性相同.在这种情况下myInput.

当控制器执行UpdateModel时,它会反映出事物,并将文本框名称与表单视图模型中字段的名称相匹配.

合理?

编辑2

另外别忘了把按钮和你的场地包在一起;

<% using (Html.BeginForm()) {%>
Run Code Online (Sandbox Code Playgroud)