asp.net-mvc – @ Html.BeginForm()如何工作?
我对ASP.NET很新,今天在asp.net上启动了MVC教程.我到了这里 http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-edit-methods-and-edit-view 到目前为止这么好,问题是: 在我的视图中,我有以下代码 @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 – Visual Studio在Aspx文件中缺少扩展/折叠按钮
- asp.net-core – 如何使用TeamCity使用WebDeploy部署ASP.NE
- ASP.net会员强制用户离线(作为管理员)
- ASP.NET 1.1到4.0迁移:事件不工作
- 为什么用户信息存储在ASP.NET的默认成员资格提供者的两个不
- asp-classic – 经典ASP页面可以在Azure中运行吗?
- asp.net – .NET核心2.0 cookie身份验证 – 不重定向
- Asp.Net Core 发布和部署( MacOS + Linux + Nginx )
- asp.net – DELETE语句与REFERENCE冲突
- asp.net-mvc – .NET 4.5 MVC RouteCollection.LowercaseUr
- asp.net – 无法返回JsonResult
- asp.net – 菜单控件生成的js导致Web窗体中的Sys
- asp.net – .NET Core项目添加对.NET Framework项
- asp.net – 如何在WCF中使用SOAP :: Lite?
- asp.net-mvc – 在ASP.NET MVC中未调用WebClient
- asp.net使用什么而不是viewstate
- asp.net-mvc – 为什么HttpContext不是从HttpCon
- asp.net-mvc-3 – Facebook身份验证和奇怪的重定
- asp.net – Windows Azure缓存预览
- asp.net-mvc – 堆栈跟踪错误