知识大全 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.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.NETMVC2.0之MVC框架简介 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Web
Web开发模式的颠覆者:ASP.NETMVC 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 年月
ASP.NET的MVC结构之AJAX 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASPNET