最近一直在研究这个mvc3,尤其是视图页面获取数据并显示这块内容。
开始一直是用最笨的方法就是将数据放在ViewBag或者ViewData,然后在视图页面提取数据并显示。
这个有问题就是ViewBag是程序运行的时候动态解析的,没办法智能提示,容易出现错误,或许你要经过as关键字显示转化相关类型。
后来想到用扩展方法。因为页面默认可以使用Html属性。转到定义发现他是HtmlHelper这个类
public new HtmlHelper<TModel> Html { get; set; }
于是扩展这个类。。。
public static List<Panners_Menu> GetMenuList(this HtmlHelper html, int level) { //To do something }
但是你要在视图页面使用这个方法,必须要引入命名空间
@using 命名空间
如果每个页面都要用到这个方法,每个页面都要这么写那岂不就烦死了。如是我找到了如下方法
在视图页面文件夹中,也就是Views文件夹中,有个web.config文件。打开并找到如下代码。
<namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> </namespaces>
下面开始修改,很简单,就是再ADD一个你所要引入的命名空间
<namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> <add namespace="命名空间" /> </namespaces>
注意:
但是,这有个问题,就是在vs中编辑视图页面是,如果调用其命名空间的方法时,他是会提示错误的,但是运行没有问题。
希望各位路过的好心人,知道给我说下。