知识大全 ASP.NET MVC雕虫小技 1-2

Posted 属性

篇首语:志不强者智不达,言不信者行不果。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET MVC雕虫小技 1-2相关的知识,希望对你有一定的参考价值。

ASP.NET MVC雕虫小技 1-2  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

看到AnyTao和TerryLee分享的关于ASP NET MVC使用和优化的技巧 不免手痒 也分享一下这一年多来ASP NET MVC开发的积累 其中未必是一些高效的技巧 但是的确是能解决问题 也未必有什么高深的原理 只是我觉得值得分享

Controller来控制HTML的Title

我想大部分朋友都有在Controller里面指定Html页面Title的需求 我习惯于先写使用的代码再去完善其实现 而指定一个Title最方便的形式莫过于

   : public ActionResult Index(int id)

   : var article=Db GetArticle(id);//获取数据库里的文章

   : Title=article Name;

   : return View();

   :

当然 这段代码是不能执行的 因为Controller并没有内建的Title属性 不过没关系 我们可以自定义一个

   : abstract public class MyBaseController : Controller

   : public string Title

   : set

   : ViewData[ Page_Title ] = value;

   :

   :

   :

然后将我们的Controller换为这个MyBaseController 之后在Master中写ViewData[ Page_Title ]的输出就好了

   : <title><%=ViewData[ Page_Title ] %></title>

OK 这个愿意实现了 当然做SEO的话Keyword和Description也可以这样来搞

ViewModel中传递Controller中定义的上下文

老赵十分推ViewModel于是我也做了不少这方面的实践 发现的确不错 但是有个问题 就是Controller中产生的上下文怎么传到View中去 比如说自定义的用户信息 等一些非static的类型 而我又不想到View中再实例化一遍 解决方法 ViewModel中另加一上下文属性(在我和程序中这些上下文继承于IContext接口 而在Controller中它的属性是CHContext)

   : public class HomeIndexViewModel

   : public IContext Context get; set; //这个属性就是解决它的方法

   : public string Message get; set;

   :

而我在Controller中

   : public ActionResult Index()

   : HomeIndexViewModel model = new HomeIndexViewModel

   : Context = CHContext //这里传递

   : Message= Wele to ASP NET MVC!

   : ;

   : return View(model);

   :

而View中

   : <%@ Page Language= C# MasterPageFile= ~/Views/Shared/Site Master

   : Inherits= System Web Mvc ViewPage<HomeIndexViewModel> %>

   : <asp:Content ID= indexTitle ContentPlaceHolderID= TitleContent runat= server >

   : Home Page

   : </asp:Content>

   : <asp:Content ID= indexContent ContentPlaceHolderID= MainContent runat= server >

   : <h ><%= Html Encode(Model Message) %></h >

   : </asp:Content>

这样我们就可以实现将Controller中产生的自定义上下文传递了 不过每个ViewModel都初始化一个IContext 未免太过频繁 也累人 于是进一步改进 我们利用作用在Controller上的Filter 在Controller的基类我们自定义的 MyBaseController中写如下Filter 而实现这个功能则要所有的ViewModel继承于一个类 MyBaseViewModel MyBaseViewModel与Model

   : public class MyBaseViewModel

   : public IContext Context get; set;

   :

   : 

   : public class HomeIndexViewModel:MyBaseViewModel

   : public string Message get; set;

   :

Controller与Filter

   : abstract public class BaseController : Controller

   : protected override void OnResultExecuting(ResultExecutingContext filterContext)

   : var m = ViewData Model as BaseViewModel;

   : if (m != null)

   : m Context = CHContext;//在这里初始化

   :

   :

这回我们在Controller里使用时就清爽了 不用再传递CHContext了 cha138/Article/program/net/201311/11627

相关参考

知识大全 ASP.NET MVC雕虫小技 1-2[1]

ASP.NETMVC雕虫小技1-2[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  看到An

知识大全 ASP.NET MVC 4框架揭秘:CBuilder(1)[2]

ASP.NETMVC4框架揭秘:CBuilder(1)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 ASP.NET MVC 4框架揭秘:Controller类型(1)[2]

ASP.NETMVC4框架揭秘:Controller类型(1)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 ASP.NET MVC 4框架揭秘:Action的执行(1)[2]

ASP.NETMVC4框架揭秘:Action的执行(1)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 ASP.NET MVC 4框架揭秘:基于IoC的DependencyResolver(1)[2]

ASP.NETMVC4框架揭秘:基于IoC的DependencyResolver(1)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理

知识大全 ASP.NET MVC 4框架揭秘:基于IoC的ControllerFactory(1)[2]

ASP.NETMVC4框架揭秘:基于IoC的ControllerFactory(1)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后

知识大全 ASP.NET MVC 4框架揭秘:从Unity来认识IoC(1)[2]

ASP.NETMVC4框架揭秘:从Unity来认识IoC(1)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 ASP.NET MVC 2.0之MVC框架简介

ASP.NETMVC2.0之MVC框架简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Web

知识大全 ASP.NET MVC

Web开发模式的颠覆者:ASP.NETMVC  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  年月

知识大全 ASP.NET 的MVC结构之AJAX

ASP.NET的MVC结构之AJAX  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET