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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

     
  • 相关阅读:
    最近我总结的常用mate标签-常用mate标签
    同一个世界(erlang解题答案)
    ranch 源码分析(完)
    ranch 源码分析(三)
    ranch 源码分析(二)
    ranch 源码分析(一)
    port 执行命令的封装和参数详解
    erlang 笔记(06/03/02)
    recon工具解读
    erlang调试方法
  • 原文地址:https://www.cnblogs.com/GnagWang/p/1778012.html
Copyright © 2011-2022 走看看