Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.NET MVC雕虫小技 1-2

ASP.NET MVC雕虫小技 1-22011-07-19 博客园 重典看到AnyTao和TerryLee分享的关于ASP.NET MVC使用和优化的技巧,不免手痒,也分享一下这一年多来ASP.NET MVC开发的积累。

其 中未必是一些高效的技巧,但是的确是能解决问题,也未必有什么高深的原理,只是我觉得值得分享。

1.Controller来控制HTML的 Title

我想大部分朋友都有在Controller里面指定Html页面Title的需求。

我习惯于先写使用的代码再去完善其实现,而指定一 个Title最方便的形式莫过于:

1: public ActionResult Index(int id) {

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

3: Title=article.Name;

4: return View ();

5: }

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

1: abstract public class MyBaseController : Controller {

2: public string Title {

3: set {

4: ViewData["Page_Title"] = value;

5: }

6: }

7: }

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

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

OK,这个愿意实现了。

当然做SEO的话 Keyword和Description也可以这样来搞。

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

老赵十分推ViewModel于是我也做了不 少这方面的实践,发现的确不错。但是有个问题,就是Controller中产生的上下文怎么传到View中去,比如说自定义的用户信息,等一些非 static的类型,而我又不想到View中再实例化一遍。

解决方法:ViewModel中另加一上下文属性(在我和程序中这些上下文继承于 IContext接口,而在Controller中它的属性是CHContext)

1: public class HomeIndexViewModel {

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

3: public string Message { get; set; }

4: }