我想从我的asp.net视图中的文本框中获取值。
<%: Html.TextBoxFor(m => m.UserName, new { @class = "flat" })%>发布于 2012-01-05 15:27:18
如果您想从表单post中获取值,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或任何您喜欢的方法来选择具有该名称的元素,假设您只需要该属性,而不是枚举一堆表单字段。
发布于 2012-01-05 15:33:14
假设您的文本框在表单中,并且您提交了它,您可以在您创建的模型中找到值,或者通过如下所示的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提交,则为...or (例如,使用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)
{
}https://stackoverflow.com/questions/8738846
复制相似问题