从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) { }