成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談ASP.NET MVC使用

開發(fā) 后端
本文介紹ASP.NET MVC使用技巧,包括介紹Controller來控制HTML的Title和ViewModel中傳遞Controller中定義的上下文。

看到AnyTao和TerryLee分享的關(guān)于ASP.NET MVC使用技巧,不免手癢,也分享一下這一年多來ASP.NET MVC使用的積累。

其中未必是一些高效的技巧,但是的確是能解決問題,也未必有什么高深的原理,只是我覺得值得分享。

1.Controller來控制HTML的Title

我想大部分朋友都有在Controller里面指定Html頁面Title的需求。我習(xí)慣于先寫使用的代碼再去完善其實現(xiàn),而指定一個Title最方便的形式莫過于:

  1. public ActionResult Index(int id) {  
  2. var article=Db.GetArticle(id);//獲取數(shù)據(jù)庫里的文章  
  3. Title=article.Name;  
  4. return View();  

當(dāng)然,這段代碼是不能執(zhí)行的,因為Controller并沒有內(nèi)建的Title屬性,不過沒關(guān)系,我們可以自定義一個:

  1. abstract public class MyBaseController : Controller {  
  2. public string Title {  
  3. set {  
  4. ViewData["Page_Title"] = value;  
  5. }  
  6. }  

然后將我們的Controller換為這個MyBaseController,之后在Master中寫ViewData[“Page_Title”]的輸出就好了。

OK,這個愿意實現(xiàn)了。當(dāng)然做SEO的話Keyword和Description也可以這樣來搞。

2.ViewModel中傳遞Controller中定義的上下文

老趙十分推ViewModel于是我也做了不少這方面的實踐,發(fā)現(xiàn)的確不錯。但是有個問題,就是Controller中產(chǎn)生的上下文怎么傳到View中去,比如說自定義的用戶信息,等一些非static的類型,而我又不想到View中再實例化一遍。

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

  1. public class HomeIndexViewModel {  
  2. public IContext Context { get; set;   
  3. }  
  4. //這個屬性就是解決它的方法  
  5. public string Message { get; set; }  

而我在Controller中:

  1. public ActionResult Index() {  
  2. HomeIndexViewModel model = new HomeIndexViewModel {  
  3. Context = CHContext,//這里傳遞  
  4. Message="Welcome to ASP.NET MVC!" 
  5. };  
  6. return View(model);  

而View中:

  1. <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
  2. Inherits="System.Web.Mvc.ViewPage<HomeIndexViewModel>" %> 
  3. <asp:Content ID="indexTitle" ContentPlaceHolderID="TitleContent" runat="server"> 
  4. Home Page  
  5. </asp:Content> 
  6. <asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server"> 
  7. <h2><%= Html.Encode(Model.Message) %></h2> 
  8. </asp:Content> 

這樣我們就可以實現(xiàn)將Controller中產(chǎn)生的自定義上下文傳遞了。不過每個ViewModel都初始化一個IContext,未免太過頻繁,也累人,于是進(jìn)一步改進(jìn),我們利用作用在Controller上的Filter,在Controller的基類我們自定義的 MyBaseController中寫如下Filter,而實現(xiàn)這個功能則要所有的ViewModel繼承于一個類:MyBaseViewModel:
MyBaseViewModel與Model:

  1. public class MyBaseViewModel {  
  2. public IContext Context { get; set; }  
  3. }   
  4. public class HomeIndexViewModel:MyBaseViewModel {  
  5. public string Message { get; set; }  

Controller與Filter

  1. abstract public class BaseController : Controller {  
  2. protected override void OnResultExecuting(ResultExecutingContext filterContext) {  
  3. var m = ViewData.Model as BaseViewModel;  
  4. if (m != null){  
  5. m.Context = CHContext;//在這里初始化  
  6. }  
  7. }  

這回我們在Controller里使用時就清爽了,不用再傳遞CHContext了。以上介紹ASP.NET MVC使用技巧

【編輯推薦】

  1. ASP.NET頁面顯示XML數(shù)據(jù)
  2. 了解什么是IFRAME ASP.NET
  3. ASP.NET生命周期的展示
  4. 解決ASP.NET AJAX腳本的錯誤問題
  5. 詳解ASP.NET應(yīng)用程序
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2009-07-22 13:24:24

ASP.NET MVC

2011-01-28 09:45:29

ASP.NET MVC

2009-12-07 09:23:05

ASP.NET MVC

2009-07-20 12:42:04

MvcContrib.ASP.NET MVC

2009-07-20 15:30:11

ASP.NET應(yīng)用

2009-07-22 16:11:43

ASP.NET AJA

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-24 10:52:42

ASP.NET ISA

2009-12-21 10:05:10

ASP.NET MVC

2009-07-31 12:43:59

ASP.NET MVC

2009-07-22 16:34:36

使用T4ASP.NET MVC

2009-07-21 14:16:02

ASP.NET管道優(yōu)化

2011-08-23 10:58:59

2009-07-23 15:24:37

ASP.NET Ima

2009-07-27 16:19:59

ASP.NET報表控件

2009-07-22 09:36:54

使用UpdataModASP.NET MVC

2009-06-15 10:57:51

FluentHtmlASP.NET MVC

2009-07-28 17:49:30

ASP.NET定期回收

2009-07-28 16:03:23

ASP.NET狀態(tài)服務(wù)

2009-07-20 17:12:17

ASP.NET訪問數(shù)據(jù)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久久男人的天堂 | 欧日韩不卡在线视频 | 精品一区二区三区日本 | 欧美日韩一本 | av大全在线 | 丝袜美腿av | 国产九九九 | 一级高清免费毛片 | av黄色免费 | 亚洲天堂av在线 | 欧美精品网 | 黄色片免费| 99国产精品99久久久久久粉嫩 | 欧美性一级| 伊人久操 | 99热视| 精品国产乱码久久久久久蜜臀 | 亚洲欧美日韩电影 | 久久久精品一区二区 | 在线观看中文字幕av | 国产一级视频在线观看 | 一区二区三区四区在线视频 | 免费视频一区二区 | 亚洲国产精品成人久久久 | 激情91| 国户精品久久久久久久久久久不卡 | 一区二区三区在线电影 | 狠狠操电影| 99精品视频免费观看 | 久久人人国产 | 亚洲一视频 | 91精品国产综合久久久久久丝袜 | 在线日韩| 成人福利在线 | 91影院在线观看 | 国产69精品久久久久777 | 精品美女在线观看视频在线观看 | 99久久婷婷 | 国产精品v | 一区二区三区免费在线观看 | 91免费视频观看 |