ASP.NET MVC使用方式

2023-06-15

这篇文章主要介绍“ASP.NET MVC使用方式”,在日常操作中,相信很多人在ASP.NET MVC使用方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ASP.NET MVC使用方式”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.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”]的输出就好了。

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

2.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 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"> <h3><%= Html.Encode(Model.Message) %></h3> </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了。

到此,关于“ASP.NET MVC使用方式”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注本站网站,小编会继续努力为大家带来更多实用的文章!

《ASP.NET MVC使用方式.doc》

下载本文的Word格式文档,以方便收藏与打印。