asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

ASP.NET MVC雕虫小技 1-2[1]


发布日期:2019年04月16日
 
ASP.NET MVC雕虫小技 1-2[1]

看到AnyTao和TerryLee分享的关于ASPNET MVC使用和优化的技巧不免手痒也分享一下这一年多来ASPNET MVC开发的积累

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

Controller来控制HTML的Title

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

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

: public ActionResult Index(int id) {

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

:Title=articleName;

: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=Welcome to ASPNET MVC!

:};

:return View(model);

: }

[] []

               

上一篇:ASP.NET中遍历页面的所有button控件

下一篇:ASP.NET防止用户多次登录的最简单的方法