asp.net-mvc – @ Html.BeginForm()如何工作?
|
到目前为止这么好,问题是: 在我的视图中,我有以下代码 @using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Movie</legend>
@Html.HiddenFor(model => model.ID)
//... bla bla html input
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
我的电影控制器 // Shows the view
public ActionResult Edit(int id = 0)
{
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}
//
// POST: /Movie/Edit/5
[HttpPost] // Handles the view above
public ActionResult Edit(Movie movie)
{
if (ModelState.IsValid)
{
db.Entry(movie).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(movie);
}
这里是一个问题 – 它如何通过电影对象到上面的POST方法?当我观察客户端的时候 <form action = "/Movie/Edit/1" ... /> 这里我不明白为什么action = url的相同的视图页面? 解决方法代码中的BeginForm版本,没有参数,将HTTP POST发送到当前URL,因此如果视图是响应 / Movie / Edit / 5,打开表单标签将如下所示: < form action =“/ Movie / Edit / 5”method =“post”> BeginForm的HTML帮助器询问路由引擎如何达到“编辑”操作 @{
var context = this.ViewContext.RequestContext;
var values = new RouteValueDictionary{
{ "controller","movie" },{ "action","edit" }
};
var path = RouteTable.Routes.GetVirtualPath(context,values);
}
<form action="@path.VirtualPath" method="get">
...
</form>
你问过电影对象如何传递.这就是所谓的模型绑定. 在电影的情况下对象,默认模型binder检查电影并查找所有可用的电影属性用于绑定.根据您之前检查的命名约定,默认模型binder可以自动将请求中的值转换并移动到电影对象中(模型绑定器可以还创建一个要填充的对象的实例).换句话说,当模型绑定器看到Movie具有Title属性时,它会查找一个值在请求中命名为“标题”.请注意,模型绑定器在请求中显示“而不是”集合“.模型绑定器使用称为值提供者的组件来搜索值不同领域的请求.模型绑定器可以查看路由数据,查询字符串和表单收集,如果您愿意,您可以添加自定义值提供程序. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – ASP.NET MVC – 在不重写方法的情况下扩展
- asp.net-mvc – ASP.NET MVC3,Html.TextAreaFor没有编码?
- 在Asp.net Web API中捕获404错误
- 如何测试ASP.NET会员密码是否符合配置的复杂性要求?
- asp.net-mvc-3 – Razor语法中的ValidateRequest
- asp.net – WebForms:MasterPages中的动态(或绝对)脚本标记
- asp.net – 如何添加一个访问控制允许原始头在IIS7有限制
- asp.net – 包中的文件排序 – 已知的库是什么?
- asp.net-mvc-2 – 为MVC2 AsyncControllers构建单元测试
- asp.net – 在project.json中排除文件夹
- 如何检测ASP.NET应用程序中的SqlServer连接泄漏?
- asp.net-core – .NET Core的静态代码分析工具
- ASP.NET / VB中的jsFiddle是否相当?
- asp.net – dapper缓冲区/缓存的说明
- asp.net-mvc – 如何使更多MapHttpRoutes为MVC 4
- asp.net-mvc-3 – 如何在.NET MVC3中注入用于验证
- 连字符前分割字符串 – asp.net c#
- asp.net-mvc – 从ASP MVC 3 Preview 1升级到bet
- asp.net-mvc-3 – jQuery.validator.unobtrusive
- 接收“路径”选项是禁止的.“ASP.NET网站中的异常
