代码改变世界

随笔分类 -  MVC

ASP.NET MVC 下打造轻量级的 Theme 机制

2012-12-28 23:16 by Zork, 4670 阅读, 收藏, 编辑
摘要: 上一篇文章[剖析 NopCommerce 的 Theme 机制]介绍了Nop实现Theme的实现原理。但由于Nop要为Admin和Mobile做特殊处理,因此写了太多的其它东西。因此我们决定自己写一个Theme的ViewEngine,仅仅用来实现皮肤功能。需求分析考虑到Demo程序,为简单起见,我们将Theme放到Url中,格式:{Controller}/{Action}?Theme={Theme},当然你完全可以从Cookie或者数据库中去读取用户设置的Theme信息。其次,Theme文件夹的组织结构,就采用NopCommerce的这种文件夹结构吧。Themes/{Theme}/Views/ 阅读全文

[MVC] 剖析 NopCommerce 的 Theme 机制

2012-12-28 09:32 by Zork, 4148 阅读, 收藏, 编辑
摘要: 前言目前开源的CMS、Blog或者电子商务站点,他们都有一个共同的亮点,无疑就是可任意切换皮肤,并且定制和扩展能力都非常强。在这方面PHP可以说做的是最好的。那么我们如何能够在我们的ASP.NET MVC站点下面实现任意切换皮肤呢?我立马想到最近流行的NopCommerce—开源的 ASP.NET MVC 电子商务站点。它提供了强大的换肤功能,可通过一键切换皮肤。那接下来,我们就一起去寻找换肤的秘诀,让我们的ASP.NET MVC站点也具有一键换肤的功能吧。让我们的ASP.NET MVC 站点可以随意 变 变 变!换肤试用先试用下Nop站点的换肤效果吧,打开Nop的源码,下载地址:http:/ 阅读全文

[MVC] 自定义ActionSelector,根据参数选择Action

2012-12-25 11:35 by Zork, 2185 阅读, 收藏, 编辑
摘要: 很多时候我们会根据UI传入的参数,呈现不同的View。也就是对于同一个Action如何根据请求数据返回不同的View。通常情况下我们会按照如下方法来写,例如:[AcceptVerbs(HttpVerbs.Post)]public ActionResult LoadTreeNodes(TreeViewItem treeViewItem){ var nodeText = treeViewItem.Text.ToLower(); if (nodeText == "videos") { …… return View("videos"); } i... 阅读全文

当 ASP.NET MVC 邂逅 JQuery.Ajax 提交数组

2012-12-24 11:32 by Zork, 8808 阅读, 收藏, 编辑
摘要: 当ASP.NET MVC 通过JQuery的Ajax 提交数组时,MVC的model binder机制就失效了。我们不得不在Controller里面编写自定义代码,将Request提交的数据转换成需要的数据类型。这个过程往往枯燥乏味。下面以某项目的实际例子来演示如何解决这个问题,提供一个通用的解决方案。需求描述当用户更改了配置,需要Ajax提交到服务器。前端代码:var items = [];$("input:checked").each(function () { items.push($(this).val());});$.ajax({ type: 'post& 阅读全文

MVC 的 View 中添加默认的命名空间

2012-10-25 12:54 by Zork, 681 阅读, 收藏, 编辑
摘要: WebForms view engine <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> <add namespace="System.Linq" 阅读全文

MVC4 集成 Bootstrap

2012-10-25 11:31 by Zork, 4735 阅读, 收藏, 编辑
摘要: Nuget 确实是个神器,能够将绝大部分开源项目直接应用到项目上,本文将Bootstrap集成到MVC4 中也是通过Nuget来操作的。 1.将twitter.bootstrap.mvc4集成到MVC4中,可通过关键字:twitter.bootstrap.mvc4 或 bootstrap.mvc搜索到。 该包依赖twitter.bootstrap, 会自动将bootstrap集成到项目中。 包中的文件说明: a. App_Start \BootstrapBundleConfig:配置脚本,样式文件。 b. BootstrapSupport\ ControlGroupExtensi... 阅读全文