我希望从我的asp.net mvc视图中获取文本框中的值。
<%: Html.TextBoxFor(m => m.UserName, new { @class = "flat" })%>
答案 0 :(得分:5)
如果要从表单发布中获取值,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)
将在帖子上填充UserName。
如果您想使用javascript取出值,您可能希望在html上添加id,如下所示:
Html.TextBoxFor(m => m.UserName, new { @class = "flat", id = "my-textbox" })
然后你可以使用jquery或任何你喜欢的东西来选择具有该名称的元素,假设你只想要那个属性而不会枚举一堆表单字段。
答案 1 :(得分:3)
假设您的文本框位于表单中,并且您提交了该文本框,则可以在您创建的模型中找到该值,或者通过formCollection
这样找到:
Razor语法
@model Model_A
@using (Html.BeginForm())
{
@Html.TextBoxFor(m => m.UserName, new { @class = "flat" })
<input type="submit" value="Submit"/>
}
控制器(使用以下任何一项)
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)
{
}