自定义控件
RenderPartial
ASP.NET MVC中如果要自定义控件的话并不能像WebForm那样用<cc1:xxxx />这样来引用,而要使用Helper。
例如我们建立一个ct.ascx
其内容:
1: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
2: 我是ct.ascx
后在Index.aspx里调用
1: <%Html.RenderPartial("ct"); %>
OK(注意这里不是用<%=%>显示而是执行语句)
用户自定义控件除了放在调用者同一目录下,也可以放在View/Shared中。而且这种自定义控件也是没有Controller支持的,仅是将View的部分提取为公共使用。
那么如果我们想调用的ascx有逻辑处理或调用数据库,也就是需要Controller的情况下,我们应该怎么办呢。
RenderAction
OK比如我想有一个有独立逻辑的ascx.
先要引用 Microsoft.Web.Mvc (http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471)
web.config
/configuration/System.Web/pages/namespaces添加<add namespace="Microsoft.Web.Mvc"/>
那么和建立一个Action是一样的
Action:
1: public ActionResult CtAction() {2: return PartialView();//注意这里不是View3: }
View(CtAction.ascx)
1: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>2:
3: 显示当前Action:<%=this.ViewContext.RouteData.Values["action"]%>View(Index.aspx):1: <%
2: Html.RenderAction("ctaction","home"); %>