Nancy之区域和分部视图的使用

一、前言

在MVC中,区域(Area)和分部视图(PartialView)应该是我们用的十分频繁的两个东西

今天我们就在Nancy中,把这两个东西简单的用起来!

二、简单使用之区域

区域,无论是对开发过程还是代码管理都占据着一个重要的地位!

下面我们就来看看Nancy中的区域要如何用,其实,准确来说,

Nancy中并没有明确提出区域这个概念,也只是我凭着与MVC的对照,自己添加的一个好理解的概念

下面就来看一下吧,这里用到了Nancy,Nancy.Hosting.Aspnet这些引用

这里是所有的视图引擎通用的功能,所以就不添加特殊的视图引擎(Razor、Spark等)

先来看看我们的项目框架

我们定义了三个HomeModule,分别在不同的位置,Admin、Other、根目录

这样就相当于有了Admin、Other、根目录三个区域

具体的内容如下 :

Admin/HomeModule.cs

 1     public class HomeModule : NancyModule
 2     {
 3         public HomeModule() : base("/admin")
 4         {
 5             Get["/"] = _ =>
 6             {
 7                 return View["index"];
 8             };
 9         }
10     }  

Other/HomeModule.cs

1     public class HomeModule : NancyModule
2     {
3         public HomeModule() : base("/other")
4         {
5             Get["/"] = _ => { return View["index"]; };
6         }
7     }  

HomeModule.cs

 1     public class HomeModule : NancyModule
 2     {
 3         public HomeModule()
 4         {
 5             Get["/"] = _ =>
 6             {
 7                 return View["index"];
 8             };
 9         }
10     }  

同样的,我们也定义相应区域的视图!

具体如下 :

Views/Admin/Home/index.html

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title></title>
 5     <meta charset="utf-8" />
 6 </head>
 7 <body>
 8     Admin->Home->Index
 9 </body>
10 </html>

Views/Other/Home/index.html

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title></title>
 5     <meta charset="utf-8" />
 6 </head>
 7 <body>
 8     Other->Home->Index
 9 </body>
10 </html>

Views/Home/index.html

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title></title>
 5     <meta charset="utf-8" />
 6 </head>
 7 <body>
 8     Home -> Index
 9 </body>
10 </html>   

这样就简单的把不同的功能分在了不同的区域了,下面看看效果

是不是很简单呢!其实跟我们正常的用法没用多少区别!就是多了几个文件夹,便于管理。

我们也可以在Module中指定视图的位置,但简易还是区分开好一点,目的还是管理方便。

Nancy中视图引擎的细节,可以帮助我们更清晰的理解视图的加载等内容,由于这一块已经有园友讲述过了

在此我就不再重复了

.NET Nancy 详解(三) Respone 和 ViewEngine

三、简单使用之分部视图

分部视图这一块,我主要是讲一下关于Razor(因为个人用的比较多)

用法很简单

@Html.Partial(viewName,modelForPartial)

是不是跟MVC中的基本一致呢?

我们现在定义两个分部视图,首部_PartialHeader.cshtml和尾部_PartialFooter.cshtml

1 <div>首部</div>
1 <div>尾部</div>  

然后定义一个布局页面_Layout.cshtml

 1 @inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<dynamic>
 2 <!DOCTYPE html>
 3
 4 <html>
 5 <head>
 6     <meta name="viewport" content="width=device-width" />
 7     <title>@ViewBag.Title</title>
 8 </head>
 9 <body>
10     @Html.Partial("/Partials/_PartialHeader")
11     <div>
12         @RenderBody()
13     </div>
14     @Html.Partial("/Partials/_PartialFooter")
15 </body>
16 </html>  

下面编写Module返回一个视图index.cshtml

1 @{
2     Layout = "Views/_Layout.cshtml";
3 }
4
5 内容

运行结果

这个是静态的分部页面,下面我们绑定一下model,也就是在Partial带两个参数

编写一个分部视图_PartialTime.cshtml

1 <span>@Model</span>

在刚才的_Layout.cshtml中添加下面的代码

1 @Html.Partial("/Partials/_PartialTime", Model)  

同时修改HomeModule

1           Get["/"] = _ =>
2             {
3                 var model = DateTime.Now.ToString();
4                 return View["index2",model];
5             };  

运行

OK了,正是我们所期待的

注:如果不在页面添加@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<dynamic>

我们的智能提示是不会出现Partial的!!

Partial是通过HtmlHelper来实现的,不过Nancy中的HtmlHelper,可用的类型与MVC相比少了很多。

像 @Html.ActionLink()这些是没有的。

时间: 2024-11-05 11:29:16

Nancy之区域和分部视图的使用的相关文章

asp.net MVC 中呈现指定区域下的分部视图

Html.RenderAction() 可以呈现分部视图. asp.net MVC就是有这种好处,可以将多个子视图无缝合成到一个视图上再输出,那么开发的时候,能够进行模块化开发.看上去同属一个页面上的东西,实际上分布于不同的物理视图文件,逻辑清晰得很. Html.RenderAction() 可以呈现分部视图,当然Html.RenderPartial()也可以.二者有区别.Html.RenderAction() 可以对应有控制器,Html.RenderPartial()直接指向视图. 所以某目前

MVC3分部视图

说到mvc3中的分部视图,不禁联想到webform里面的ascx分部控件,我们在MVC时代可以更加轻松的控制分部视图.MVC中主要分为两大类的分部视图,分别是Html.Partial(partialName).Html.RenderPartial(partialName)和Html.Action.Html.RenderAction(); (1)Html.Partial(partialName).Html.RenderPartial(partialName)  ●这两个方法我们可以指定任何的.cs

MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult

MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult 导出EXCEL方法总结:MVC导出数据到EXCEL的方法有很多种,常见的是: 1.采用EXCEL COM组件来动态生成XLS文件并保存到服务器上,然后转到该文件存放路径即可:优点:可设置丰富的EXCEL格式,缺点:需要依赖EXCEL组件,且EXCEL进程在服务器中无法及时关闭,以及服务器上会存留大量的不必要的XLS文件: 2.设置输出头为:application/ms-excel,再输出拼接的HTM

MVC分部视图

近期的项目一直在使用MVC,常常用到分部视图,下面就简单介绍一下分部视图. 使用分部视图最大的一个感受就是,整个页面颗粒化了,每个大页面都由这些小的颗粒组成,而且这些颗粒可以共享.大家的任务量便随之减轻了不少. 分部视图的优点: 1.   分部视图可以使系统插件化 . 2.   分部视图还可以带来一个优点,就是分工合作. 3.   分部视图还有一个在Mvc时代的优点,就是实现简单. 分部视图和视图的区别 视图有head.body标签,可以定义js,可以指定母板页,但是在我们用Vs右键添加 分部视

使用custombox和动态加载的分部视图中tooltip无效,或者tooltip看不到

首先MVC中动态加载的分部视图,需要在这个分部视图的View页面最后执行下这个函数 <script>    $("[data-toggle='tooltip']").tooltip(); //重新开启下tooltip</script> 就可以正常了 tooltip的z-index时候1070 bootstrap的modal时候1050,直接使用bootstrap的弹出框时候,tooltip是完全正常的 不过custombox的z-index达到9999 这个需要

Asp.net Mvc中分部视图获取后台数据并展示

方式一: 1.主页面中代码: @{Html.RenderAction("CreateLeftMenu");} 2.Controller中代码: public PartialViewResult CreateLeftMenu() { return PartialView("PartialAdminLeft", "123"); } 这里只返回字符串"123". 3.分部视图代码: @model object @{ string s

MVC |分部视图 PartialView()

介绍如何定义 其实它和普通视图没有多大区别,只是创建分部视图的时候视图里没有任何内容,你需要什么标签你自己加.第二就是分部视图不会执行_ViewStart.cshtml中的内容) 控制器 PartialViewDeomController控制器 [csharp] view plain copy using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.

MVC中的分部视图

背景: 项目的工期马上就要到了,由于后台封装的很好,我们只需要用心熟悉框架,接下来后台的工作就是简单的代码工作了.原本以为最困难的时期已经过去,可没想到前台才是最困难的. B/S的基础十分薄弱,加上BS的项目做得少,遇到困难是避免不了的.霞姐说要界面灵活,那种在html里加onclick的时代已经过去.今天就来说说界面灵活之一--分部视图和Razor语法. 分部视图: 在一定程度上,分部视图与用户控件十分类似.他们都可以提高内容或代码的可重用性,但不同之处是,分部视图不需要使用ViewState

基于layer封装的异步加载分部视图弹出层

背景:之前一直用的artdialog,但是样式不是很好看,后来偶然看到layer,觉得不错,但是对于.net mvc来说,不能像artdialog一样弹出分部视图是很难受的.所以下面的方法就解决了. <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta na