文章目錄
- RenderPartial
- RenderAction
主版頁面(Master)1.主版頁面是與Controller無關的,主版頁面只是一個View檔案,而沒有任何Controller與之相對應。2.其實在ASP.NET MVC中View的aspx與主版頁面並不像WebForm中那樣緊密關聯。例如我想更換一個aspx的主版頁面,只要在Action中return 時指定所要使用的Master即可: 我有2個Master檔案,而/Views/Home/Index.aspx則為 這時我們如果想要使用Site2做為Master,只要在Action中return View指定masterName的參數即可:
1: public ActionResult Index() {
2: return View(null,"Site2");
3: }
自訂控制項RenderPartialASP.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的情況下,我們應該怎麼辦呢。RenderActionOK比如我想有一個有獨立邏輯的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();//注意這裡不是View
3: }
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"); %>
OK運行起來,結果為: 檔案的上傳下面來說一下與本篇本無關的話題就是檔案的上傳,我這裡也不多做解釋了,代碼就是最好的語言。View:
1: <form action="<%=Url.Action("Process") %>" enctype="multipart/form-data" method="post">
2: <input name="up1" type="file" /> <input type="submit" />
3: </form>
Action(Process):
1: public ActionResult Process(HttpPostedFileBase up1)
2: {//參數名與name名一致即可
3: up1.SaveAs(Server.MapPath("~/" + up1.FileName));
4: return Content(up1.FileName);
5: }
顯示: 提交後: 再看看檔案夾,檔案已經上傳成功: 本文是為我的大表哥寫的,因為他是一位不知疲倦的ASP講師,我希望我寫的教程大家也能有用,謝謝大家支援