<th id="v9g6b"><track id="v9g6b"></track></th>

  • <em id="v9g6b"><acronym id="v9g6b"></acronym></em>
    <progress id="v9g6b"><pre id="v9g6b"></pre></progress>
    <tbody id="v9g6b"></tbody>
    <button id="v9g6b"><acronym id="v9g6b"></acronym></button>
    <rp id="v9g6b"><ruby id="v9g6b"></ruby></rp>

        <dd id="v9g6b"></dd>

        <em id="v9g6b"></em>

          初识MVC框架--Controller与View交互1

          在基于Web开发框架开发的软件中,Controller和View之间传递数据是常有的,下面我们来领略下Controller与View各种数据交互方式的风采。

          方式一:ViewBag\ViewData\TempData

          ViewBag 是动态类型(dynamic),ViewData 是一个字典型的(Dictionary),TempData的使用
          同ViewData和ViewBag一样,TempData也可以用来向视图传递数据。只是ViewData和ViewBag的生命周期和View相同,只对当前View有用。而TempData则可以在不同的Action中进行传值。
          1. ViewData与TempData方式是弱类型的方式传递数据,而使用Model传递数据是强类型的方式。
          2. ViewData与TempData是完全不同的数据类型,ViewData数据类型是ViewDataDictionary类的实例化对象,而TempData的数据类型是TempDataDictionary类的实例化对象。
          3. TempData实际上保存在Session中,控制器每次执行请求时都会从Session中获取TempData数据并删除该Session。TempData数据只能在控制器中传递一次,其中的每个元素也只能被访问一次,访问之后会被自动删除。
          4. ViewData只能在一个Action方法中进行设置,在相关的视图页面读取,只对当前视图有效。理论上,TempData应该可以在一个Action中设置,多个页面读取。但是,实际上TempData中的元素被访问一次以后就会被删除。
          5. 在MVC3开始,视图数据可以通过ViewBag属性访问,在MVC2中则是使用ViewData。MVC3中保留了ViewData的使用,有关他们之间的区别可以参考这个文章。

          Controller里面赋值:
          public ActionResult Index()
          {
          ViewBag.hello = "hello,this is viewBag";
          ViewData["hi"] = "hi,this is viewData";
          TempData["abc"] = "this is tempdata";
          return View();
          }
          View里面调用:
          <h2>关于</h2> <p> @ViewBag.hello @ViewData["key"] @TempData["abc"] </p>

          方式二:Form表单Model传值

          View层表单代码:

          @model SaleOrderViewModel

          @using (Html.BeginForm("SalesOrderEdit", "Order", FormMethod.Post, new { id = "SalesOrderEditForm", enctype = "multipart/form-data" }))
          {

          @Html.HiddenFor(m => m.SaleOrderID)
          <div class="form-horizontal">
          <div class="page-header">
          <h3>@this.Intl("Common.BasicInfo")</h3>
          </div>
          <div class="form-group">
          @Html.ResourceLabelFor(model => model.SaleOrderNo, new { @class = "control-label col-md-2 field-required" })

          <div class="col-md-4">
          @Html.TextBoxFor(model => model.SaleOrderNo, new { @class = "form-control", @readonly = "readonly" })
          @Html.ResourceValidationMessageFor(model => model.SaleOrderNo, "", new { @class = "text-danger" })
          </div>

          @Html.ResourceLabelFor(model => model.OrderDate, new { @class = "control-label col-md-2 field-required" })

          <div class="col-md-4">
          @Html.TextBoxFor(model => model.OrderDate, new { @class = "form-control datepicker" })
          @Html.ResourceValidationMessageFor(model => model.OrderDate, "", new { @class = "text-danger" })
          </div>
          </div>
          <div class="form-group">
          <div class="col-md-4">
          <input type="submit" value="@this.Intl("Common.Save").ToString()" class="btn btn-primary" />
          <input type="submit" name="SaveAndSubmit" value="@this.Intl("Common.SaveAndSubmit").ToString()" class="btn btn-primary" />
          @Html.ActionLink(this.Intl("Common.Cancel").ToString(), "SalesOrderList", null, new { @class = "btn btn-default" })
          </div>
          </div>
          </div>
          }

          Controller层代码,获取某ID销售数据:

          public ActionResult SalesOrderEdit(int saleOrderID)
          {
          SaleOrder saleOrder = _saleOrderService.FindSaleOrder(saleOrderID);
          if (saleOrder == null)
          {
          return HandError();
          }

          if (!saleOrder.IsRetail)
          {
          return RedirectToAction("DisSalesOrderEdit", new { saleOrderID = saleOrderID });
          }

          saleOrder.Customer = _basicDataService.GetCustomerByCode(saleOrder.CustormerCode);
          saleOrder.Delivery = _basicDataService.GetDeliverierByCode(saleOrder.DeliveryCode);
          SaleOrderViewModel saleOrderViewModel = saleOrder.ToModel();

          //附件
          IList<Attachment> attachments = _basicDataService.LoadAttachment(saleOrderViewModel.RefID);
          saleOrderViewModel.Attachments = new List<AttachmentOrderView>();
          foreach (Attachment attachment in attachments)
          {
          saleOrderViewModel.Attachments.Add(attachment.ToOrderView());
          }

          return View(saleOrderViewModel);
          }

          Controller层代码,编辑某ID销售数据:

          // <summary>
          /// 自有业务销售订单表单编辑 Post
          /// </summary>
          /// <param name="saleOrder"></param>
          /// <returns></returns>
          [HttpPost, NamedFormParameter("SaveAndSubmit", "saveAndSubmit")]
          [ValidateAntiForgeryToken()]
          public ActionResult SalesOrderEdit(SaleOrderViewModel saleOrderViewModel, bool saveAndSubmit)
          {
          try
          {
          saleOrderViewModel.ModifyBy = this.UserName;
          saleOrderViewModel.ModifyDate = DateTime.Now;

          if (saleOrderViewModel.Attachments != null)
          {
          //附件
          foreach (AttachmentOrderView attachmentOrderView in saleOrderViewModel.Attachments)
          {
          if (attachmentOrderView.EditStatu == "d")
          {
          Utils.DeleteFile(attachmentOrderView.FileName);
          _basicDataService.RemoveAttachment(attachmentOrderView.AttachmentID);
          }
          }
          }
          SaleOrder saleOrder = saleOrderViewModel.ToEntity();
          IList<Attachment> attachments = new List<Attachment>();
          Utils.UploadFileBatch(Request.Files, attachments, saleOrder.RefID);
          _basicDataService.SaveAttachments(attachments);

          _saleOrderService.UpdateSaleOrder(saleOrder);



          return View("Finish", new List<string>() { this.Intl("Common.Message.SaveSuccessfully"), "SalesOrderList" });
          }
          catch (Exception e)
          {
          Util.Logger.Error(e.Message, e);
          return View("Finish", new List<string>() { this.Intl("Common.Message.SaveFailed"), "SalesOrderList" });
          }
          }

          方式三:异步加载,json传值

          还是以销售订单为例,我们删除一个ID的订单,销售列表的删除按钮View层代码:

           <a class="delete btn btn-default btn-xs btn-delete" href="#" data-puorderid="@m.SaleOrderID">@this.Intl("Common.Delete").ToHtmlString()</a>

          javascript代码:

          <script type="text/javascript">
          $(document).ready(function () {
          $("#salesordertb a.delete").bind("click", function () {
          if (confirm("@this.Intl("Common.ReConfirmDelete")")) {
          var data = "saleOrderID=" + $(this).attr("data-saleorderid");
          var ajxoptioan = {
          url: "@Url.Action("SalesOrderDelete")",
          type: 'Post',
          async: false,
          dataType: 'json',
          data: data,
          context: this,
          success: function (result) {
          if (result.ReMsg == true) {
          $('#SalesOrderListForm').submit();
          }
          else {
          ShowNotice(result.ReMsg, "danger");
          }
          },
          error: function (XMLHttpRequest, textStatus, errorThrown) {
          ShowNotice(XMLHttpRequest[1], "danger");
          }
          }
          $.ajax(ajxoptioan);
          }
          });
          });

          </script>

          Controller层代码:

          /// <summary>
          /// 销售订单 ajax删除
          /// </summary>
          /// <param name="inStoreID"></param>
          /// <returns></returns>
          public ActionResult SalesOrderDelete(int saleOrderID)
          {
          bool result = false;
          string message = this.Intl("Common.Message.DeleteFailed");
          try
          {
          result = this._saleOrderService.RemoveSaleOrder(saleOrderID) > 0;
          if (result)
          {
          this.SuccessNotice(this.Intl("Common.Message.DeleteSuccessfully"));
          }
          return Json(new { ReMsg = result }, JsonRequestBehavior.AllowGet);
          }
          catch (Exception e)
          {
          message += "<br/>" + e.Message;
          return Json(new { ReMsg = message }, JsonRequestBehavior.AllowGet);
          }
          }

          网站&系统开发技术学习交流群:463167176

          本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,共创和谐网络环境。
          转载请注明:文章转载自:华晨软件-云微开发平台 ? 初识MVC框架--Controller与View交互1
          本文标题:初识MVC框架--Controller与View交互1
          本文地址:http://www.sajuice.com/OrgTec/back/0002.html

          相关文章: UI颜色之216 Web安全色 | 初识MVC框架--Controller与View交互2

          电话
          电话 18718672256

          扫一扫
          二维码
          本港台开奖 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>