最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

Coolite Cool Study 3 MVC + Coolite 的实现代码

来源:懂视网 责编:小采 时间:2020-11-27 22:44:20
文档

Coolite Cool Study 3 MVC + Coolite 的实现代码

Coolite Cool Study 3 MVC + Coolite 的实现代码: 因为默认的 MVC 的样式文件里对于的 table 和 其他相关样式(h1~h6) 与Coolite有冲突,会导致GridPanel走样,大家记得先把那个table 和 h1~h6的样式清除掉才看到GridPanel的帅脸面 … 项目文件分布: 关于Coolite在MVC中的配置文件跟一般
推荐度:
导读Coolite Cool Study 3 MVC + Coolite 的实现代码: 因为默认的 MVC 的样式文件里对于的 table 和 其他相关样式(h1~h6) 与Coolite有冲突,会导致GridPanel走样,大家记得先把那个table 和 h1~h6的样式清除掉才看到GridPanel的帅脸面 … 项目文件分布: 关于Coolite在MVC中的配置文件跟一般

MVC-Coolite

因为默认的 MVC 的样式文件里对于的 table 和 其他相关样式(h1~h6) 与Coolite有冲突,会导致GridPanel走样,大家记得先把那个table 和  h1~h6的样式清除掉才看到GridPanel的帅脸面 …

项目文件分布:

ProjectFiles

关于Coolite在MVC中的配置文件跟一般webform是一样的。 但在MVC的Global.asax中,需要在 RegisterRoutes 方法里加上这一句:

routes.IgnoreRoute("{exclude}/{coolite}/coolite.axd");

另外 ScriptManager 要注明 IDMode="Static“:

<ext:ScriptManager ID="ScriptManager1" runat="server"  IDMode="Static"/>

其中唯一与一般MVC不同的是,我们需要定义自己的ActionResult来返回Json结果给客户端。因为Coolite 的JsonReader 要求的格式大致都是这样:{data: [{…}], totalCount: …}

关于JsonReader的一般用法:

<ext:JsonReader ReaderID="CustomerID" Root="data" TotalProperty="totalCount"> 

所以, 要继承MVC ActionResult 的抽象方法 public override void ExecuteResult(ControllerContext context)  来返回给 JsonReader   合适口味的 JsonResult , 不然它就不认人了。

以下代码实现了对Json Response & Save Response 的简单封装。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Coolite.Ext.Web;

namespace CooliteMVC.Helper
{ 
 public class AjaxStoreResult : ActionResult
 {
 public AjaxStoreResult() { }

 public AjaxStoreResult(object data)
 {
 this.Data = data;
 }

 public AjaxStoreResult(object data, int totalCount)
 : this(data)
 {
 this.TotalCount = totalCount;
 }

 public AjaxStoreResult(StoreResponseFormat responseFormat)
 {
 this.ResponseFormat = responseFormat;
 }

 private object data;
 public object Data
 {
 get { return this.data; }
 set { this.data = value; }
 }

 private int totalCount;
 public int TotalCount
 {
 get { return this.totalCount; }
 set { this.totalCount = value; }
 }

 private StoreResponseFormat responseFormat = StoreResponseFormat.Load;
 public StoreResponseFormat ResponseFormat
 {
 get { return this.responseFormat; }
 set { this.responseFormat = value; }
 }

 private SaveStoreResponse saveResponse;
 public SaveStoreResponse SaveResponse
 {
 get
 {
 if (this.saveResponse == null)
 {
 this.saveResponse = new SaveStoreResponse();
 }
 return this.saveResponse;
 }
 }

 public override void ExecuteResult(ControllerContext context)
 {
 switch (this.ResponseFormat)
 {
 case StoreResponseFormat.Load:

 string json = Coolite.Ext.Web.JSON.Serialize(Data);
 json = "{data:" + json + ", totalCount:" + 100 + "}";
 context.HttpContext.Response.Write(json);
 
 break;
 case StoreResponseFormat.Save:
 Response response = new Response(true);
 response.Success = this.SaveResponse.Success;
 response.Msg = this.SaveResponse.ErrorMessage;
 StoreResponseData saveResponse = new StoreResponseData();
 saveResponse.Confirmation = this.SaveResponse.ConfirmationList;
 response.Data = saveResponse.ToString();

 response.Write();
 break;
 default:
 throw new ArgumentOutOfRangeException();
 }
 }
 
 }

 public enum StoreResponseFormat
 {
 Load,
 Save
 }

 public class SaveStoreResponse
 {
 private bool success = true;
 private string errorMessage;

 public bool Success
 {
 get { return this.success; }
 set { this.success = value; }
 }

 public string ErrorMessage
 {
 get { return this.errorMessage; }
 set { this.errorMessage = value; }
 }

 public ConfirmationList ConfirmationList { get; set; }
 }
}

AjaxStoreResult 在 CustomerController 中的使用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using CooliteMVC.Models;
using CooliteMVC.Helper;
using Coolite.Ext.Web;

namespace CooliteMVC.Controllers
{
 public class CustomerController : Controller
 {
 //
 // GET: /Customer/

 public ActionResult Index()
 {
 ViewData["Title"] = "Customer List";
 ViewData["Message"] = "Welcome to Coolite MVC! My name is Bruce.";
 return View();
 }

 public ActionResult List(int limit, int start, string dir, string sort)
 {
 Random rand = new Random();
 IList<Customer> list = new List<Customer>();
 for (int i = start; i < start + limit; i++)
 list.Add(new Customer
 {
 CustomerID = "Customer" + i,
 Address = "Address" + i,
 City = "City" + rand.Next(1000),
 CompanyName = "Com" + rand.Next(1000),
 ContactName = "Contract" + rand.Next(1000),
 ContactTitle = "Title" + rand.Next(1000),
 Country = "Country" + rand.Next(1000),
 Email = rand.Next(1000) + "@live.com",
 Fax = rand.Next(1000).ToString() + rand.Next(1000),
 Mobile = rand.Next(1000).ToString() + rand.Next(1000),
 Notes = "Notes" + rand.Next(1000),
 Phone = "Phone" + rand.Next(1000),
 Region = "Region" + rand.Next(1000),
 TranDate = DateTime.Now.AddDays(rand.Next(30))
 });
 return new AjaxStoreResult(list, 100);
 }

 public ActionResult Save()
 {
 AjaxStoreResult ajaxStoreResult = new AjaxStoreResult(StoreResponseFormat.Save);
 try
 {
 StoreDataHandler dataHandler = new StoreDataHandler(Request["data"]);
 ChangeRecords<Customer> data = dataHandler.ObjectData<Customer>();

 foreach (Customer customer in data.Deleted)
 {
 //db.Customers.Attach(customer);
 //db.Customers.DeleteOnSubmit(customer);
 }
 foreach (Customer customer in data.Updated)
 {
 //db.Customers.Attach(customer);
 //db.Refresh(RefreshMode.KeepCurrentValues, customer);
 }
 foreach (Customer customer in data.Created)
 {
 //db.Customers.InsertOnSubmit(customer);
 }
 }
 catch (Exception e)
 {
 ajaxStoreResult.SaveResponse.Success = false;
 ajaxStoreResult.SaveResponse.ErrorMessage = e.Message;
 }
 return ajaxStoreResult;
 }
 
 }
}

页面的关键代码:

 <ext:Store ID="dsCustomers" runat="server" >
 <Proxy>
 <ext:HttpProxy Url="/Customer/List" Method ="GET" />
 </Proxy>
 <UpdateProxy>
 <ext:HttpWriteProxy Url="/Customer/Save" />
 </UpdateProxy>
 <Reader>
 <ext:JsonReader ReaderID="CustomerID" Root="data" TotalProperty="totalCount">
 <Fields>
 <ext:RecordField Name="CustomerID" SortDir="ASC" />
 <ext:RecordField Name="CompanyName" />
 <ext:RecordField Name="ContactName" />
 <ext:RecordField Name="Email" />
 <ext:RecordField Name="Phone" />
 <ext:RecordField Name="Fax" />
 <ext:RecordField Name="Region" />
 <ext:RecordField Name="TranDate" Type="Date" />
 </Fields>
 </ext:JsonReader>
 </Reader>
 <BaseParams>
 <ext:Parameter Name="limit" Value="15" Mode="Raw" />
 <ext:Parameter Name="start" Value="0" Mode="Raw" />
 <ext:Parameter Name="dir" Value="ASC" />
 <ext:Parameter Name="sort" Value="CustomerID" />
 </BaseParams>
 <SortInfo Field="CustomerID" Direction="ASC" />
 </ext:Store>
我们可以看到其实就是Url的写法不同而已:
 <ext:HttpProxy Url="/Customer/List" Method ="GET" />
 <ext:HttpWriteProxy Url="/Customer/Save" /> 
详细页面代码跟第一章差不多,这里不列出来。 

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

Coolite Cool Study 3 MVC + Coolite 的实现代码

Coolite Cool Study 3 MVC + Coolite 的实现代码: 因为默认的 MVC 的样式文件里对于的 table 和 其他相关样式(h1~h6) 与Coolite有冲突,会导致GridPanel走样,大家记得先把那个table 和 h1~h6的样式清除掉才看到GridPanel的帅脸面 … 项目文件分布: 关于Coolite在MVC中的配置文件跟一般
推荐度:
标签: cool study mvc
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top