没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:龚雪|2014-01-21 09:19:02.000|阅读 324 次
概述:创建一个新的ActionResult类,它允许ASP.NET MVC应用作更多更新,HTML DOM不相关的部分,在单一的请求——响应往返中。这样的目的是在客户端呈现更多的局部视图。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
说明:
最近,我们有一个基于网络的项目, 我们当中(开发人员)很少人在处理它。最重要的目标是创建一个复杂的像FaceBook的UI,但我们并不想构建复杂而繁琐的客户端代码。现在的计划是将页面切成许多嵌套的,甚至有时相当小的局部视图,并转移最终HTML片段到客户端。用很简单的JS.ajax功能,做服务器端的大部分工作。
很快,就能看出MVC框架的内置ActionResults并不适合。因此得创建一个自己的解决方案。
解决方案
我们已经创建了一个新的ActionResult类,它允许ASP.NET MVC应用作更多更新,HTML DOM不相关的部分,在单一的请求——响应往返中。这样的目的是在客户端呈现更多的局部视图,因此它被叫做MultipartialResult。
举个例子,你是在处理一个基于Web的邮件读取者,当用户选择一个邮件然后点击删除按钮,会有这么几件事同时发生:
有了MultipartialResult,处理删除点击的动作看起来如下:
public ActionResult OnDelete(long EmailId)
{
//... does the deleting
//... creates the model for the new InboxList partial view (InboxListModel)
//... creates the model for the PreviewPane partial view (PreviewPaneModel)
//... calculates the number of the emails (EmailCount)
//... renders the browser title with the updated unread email number (BrowserTitle)
MultipartialResult result = new MultipartialResult();
result.AddView("_InboxList","InboxListDiv",InboxListModel);
result.AddView("_PreviewPane","PreviewDiv",PreviewPaneModel);
result.AddContent(EmailCount.ToString(),"EmailCountDiv");
result.AddScript(string.Format("document.title='{0}';",BrowserTitle));
return result;
}
AddView功能将致使“InboxListDiv”HTML元素被更新。AddContent功能将使“EmailCountDiv”HTML元素内容将被以给出的string更新。
AddScript功能将使给出的JavaScript代码在客户端上被执行。
客户端上的事件处理器(运行无需刷新页面),你需要做的仅仅是调用OnSuccess JavaScript事件中的MultipartialUpdate。
@Ajax.ActionLink("Delete", "OnDelete", new { EmailId = Model.CurrentEmail.Id }, <br />new AjaxOptions { OnSuccess = "MultipartialUpdate" })
或者,你可以在Ajax上用它:
@using (Ajax.BeginForm("OnDelete",
new { EmailId = Model.CurrentEmail.Id }, new AjaxOptions { OnSuccess = "MultipartialUpdate" }))
或者你可以在jQuery .post或ajax功能。
function deleteClicked(emailId) {
$.ajax({
url: "/inbox/ondelete",
type: "POST",
data: { emailId: emailId },
success: function (result) {
MultipartialUpdate(result);
},
});
背景:
MultiPartial的理念很简单。它是继承了JsonReuslt类,呈现指定元素为字符串,收集这些字符串,封包为一个json数据,并发送这个json到客户端。
在客户端,一个小的JavaScript功能遍历这些字符串,并相应更新DOM。
当收集不同类型结果时,MultipartialResult,通过内容正确地标记它们:
public MultipartialResult AddView(string viewName, string containerId, object model = null)
{
views.Add(new View() { Kind = ViewKind.View,
ViewName = viewName, ContainerId = containerId, Model = model });
return this;
}
public MultipartialResult AddContent(string content, string containerId)
{
views.Add(new View() { Kind = ViewKind.Content, Content = content, ContainerId = containerId });
return this;
}
public MultipartialResult AddScript(string script)
{
views.Add(new View() { Kind = ViewKind.Script, Script = script });
return this;
}
在动作返回Result对象后,MVC框架调用ExecuteResult功能,通过挨个处理元素,产生了一个json字符串:
public override void ExecuteResult(ControllerContext context)
{
List<object> data = new List<object>();
foreach (var view in views)
{
string html = string.Empty;
if (view.Kind == ViewKind.View)
{
//view result
html = RenderPartialViewToString(mController, view.ViewName, view.Model);
data.Add(new { updateTargetId = view.ContainerId, html = html });
}
else if (view.Kind == ViewKind.Content)
{
//content result
html = view.Content;
data.Add(new { updateTargetId = view.ContainerId, html = html });
}
else if (view.Kind == ViewKind.Script)
{
//script result
data.Add(new { script = view.Script });
}
}
Data = data;
base.ExecuteResult(context);
}
注意渲染局部视图为字符串并非本文的主题。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ke049m.cn
文章转载自:慧都控件网



在制造业数字化项目中,让数据流动起来,往往比让设备动起来还难。
在众多OPC开发工具中,今天跟大家详细介绍一下来自芬兰的 Prosys OPC——一家专注OPC技术十余年的厂商。
Sparx Systems的Enterprise Architect(简称EA)是一款旨在驾驭企业复杂性、驱动创新的综合建模工具。通过提供覆盖系统开发全周期的可视化建模环境,帮助开发团队从战略规划到具体实施,确保业务与IT紧密结合,并促进团队间的无缝协作。
随着企业数字化程度不断提高,如何在不同CAD系统之间实现高精度、低损耗的数据交换,成为PLM、CAE、BIM乃至数字孪生平台的共同挑战。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@ke049m.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
半岛外围网上直营