从Html.TextBoxFor获取价值

我想从我的asp.net mvc视图中的文本框中获取值。

 m.UserName, new { @class = "flat" })%> 

如果要从表单发布中获取值,MVC将自动将其绑定到与属性名称匹配的任何参数。 因此,如果您将表单发布到操作MyPost,它将如下所示:

 public ActionResult MyPost(string UserName) { //Not case sensitive, you can do userName as well var a = UserName; } 

如果要发布许多字段,则可能需要使用请求对象。 MVC将自动绑定具有相同名称的属性。

 public class MyRequest { public string UserName { get; set; } } public ActionResult MyPost(MyRequest request) 

将在post上填充UserName。

如果你想使用javascript取出值,你可能想在html上添加一个id,如下所示:

 Html.TextBoxFor(m => m.UserName, new { @class = "flat", id = "my-textbox" }) 

然后你可以使用jquery或任何你喜欢的东西来选择具有该名称的元素,假设你只想要那个属性并且不会枚举一堆表单字段。

假设您的文本框在表单中,并且您提交了它,您可以在您创建的模型中找到值,或者通过formCollection如下所示:

剃刀语法

 @model Model_A @using (Html.BeginForm()) { @Html.TextBoxFor(m => m.UserName, new { @class = "flat" })  } 

控制器 (使用以下任何一种)

 public ActionResult ActionName(Model_A viewModel, FormCollection formCollection) { viewModel.UsernName //or formCollection.GetValue("UserName").AttemptedValue //or formCollection["UserName"] } 

…或者如果您在没有form情况下提交(例如使用JQuery和Javascript)

使用Javascript

 function Submit() { var usr= document.getElementById('UserName').value; $.ajax({ type: "POST", url: '@Url.Action("ActionName2")', data: "UserName=" + usr }); return true; } 

您的控制器需要具有单独的属性,作为您提交的任何方法的输入属性。

调节器

 public ActionResult ActionName2(string UserName) { }