zoukankan      html  css  js  c++  java
  • 实现HTTPPOST的Edit Action方法(转)

    实现HTTP-POST的Edit Action方法

    1.   [AcceptVerbs(HttpVerbs.Post)]
            public ActionResult Edit(int id, FormCollection formValues) {}
    表示该方法负责处理HTTP POST动作。

    2.  获取表单提交的值

    一个简单的办法是使用Controller基类的Request属性来访问form集合,并直接获取提交的参数值:

           public ActionResult Edit(int id, FormCollection formValues)
            {
                // Retrieve existing dinner
                Dinner dinner = dinnerRepository.GetDinner(id);
                // Update dinner with form posted values
                dinner.Title = Request.Form["Title"];
                dinner.Description = Request.Form["Description"];
                dinner.EventDate = DateTime.Parse(Request.Form["EventDate"]);
                dinner.Address = Request.Form["Address"];
                dinner.Country = Request.Form["Country"];
                dinner.ContactPhone = Request.Form["ContactPhone"];
                // Persist changes back to database
                dinnerRepository.Save();
                // Perform HTTP redirect to details page for the saved Dinner
                return RedirectToAction("Details", new { id = dinner.DinnerID });
            }

    3.   使用Controller 基类的内置方法UpdateModel()。该方法支持使用传入的表单参数更新对象的属性,它使用反射机制来解析对象的属性名称,接着基于客户端传入的参数值自动赋值给对象相关属性。
        [AcceptVerbs(HttpVerbs.Post)]
            public ActionResult Edit(int id, FormCollection formValues)
            {
                // Retrieve existing dinner
                Dinner dinner = dinnerRepository.GetDinner(id);
                UpdateModel(dinner);
                // Persist changes back to database
                dinnerRepository.Save();
                // Perform HTTP redirect to details page for the saved Dinner
                return RedirectToAction("Details", new { id = dinner.DinnerID });
            }

    4.   异常处理机制说明:
      try {}
      catch
                {
                    foreach (var issue in dinner.GetRuleViolations())
                    {
                        ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
                    }
                    return View(dinner);
                }

    在catch代码块中,首先遍历Dinner对象中所有规则冲突,并添加到ModelState对象中,接着重新显示视图。

     


    作者:GangWang
    出处:http://www.cnblogs.com/GnagWang/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

     
  • 相关阅读:
    node-express脚手架生成的项目中实现浏览器缓存
    three.js通过canvas实现球体世界平面地图
    激光原理与技术(第二版)课后答案 阎吉祥 版 高等教育出版社 课后习题答案 解析
    Spring2.5注释驱动与基于注释的MVC
    iBatis2学习笔记:入参和返回值的问题
    重写了java.util.Date类中一些过时的方法
    Java日期格式化及其使用例子收集
    深入研究java.lang.ThreadLocal类
    Java:对象的强、软、弱和虚引用
    Java 反射机制深入研究
  • 原文地址:https://www.cnblogs.com/GnagWang/p/1778012.html
Copyright © 2011-2022 走看看