若要实现强类型视图中提交表单,把View中的Model数据传递给Controller,那么必须要确保一件事——表单中的input标签元素的name属性的值必须与model中的属性名相同,不区分大小写。
示例代码如下:
view视图代码
@model MVCCase.Models.EditModels
<h2>Edit</h2>
<form action="/home/edit" method="post">
<fieldset>
<legend>EditModels</legend>
<div class="editor-label">
姓名
</div>
<div class="editor-field">
<input type="text" name="name" />
</div>
<div class="editor-label">
性别
</div>
<div class="editor-field">
<input type="text" name="gender" />
</div>
<div class="editor-label">
年龄
</div>
<div class="editor-field">
<input type="text" name="age" />
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
</form>
注:这里表单提交使用了post方式,以get方式也是没有问题的。
控制器代码
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
return View();
}
public ActionResult Edit(EditModels model)
{
Response.Write(model.Name + " " + model.Age + " " + model.Gender);
return View();
}
}
注:这里只是验证数据有没有传到后端。
model代码
public class EditModels
{
public string Name { get; set; }
public string Gender { get; set; }
public string Age { get; set; }
}
另,B/S应用程序,如客户端使用:ExtJs和JqueryUI等 ,可以使用FormCollection接收客户端数据,代码如下
view中代码
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>用户编辑</title>
</head>
<body>
@using (@Html.BeginForm())
{
<div>
用户名:@Html.TextBox("UserName", null, new { @style = "width:200px" })
</div>
<div>
密码:@Html.Password("Password")
</div>
<div>
<input type="submit" value="提交" /></div>
}
</body>
</html>
控制器中代码
//UserEdit
public ActionResult UserEdit_01()
{
return View();
}
[HttpPost]//UserEdit
public ActionResult UserEdit_01(FormCollection form)
{
Response.Write(form["UserName"]);
Response.Write("<br />");
Response.Write(form[1]);
Response.Write("<br />");
return View();
}