mvc 母版頁、用戶自定義控件


母版頁(Master)

1.母版頁是與Controller無關的,母版頁只是一個View文件,而沒有任何Controller與之相對應。

2.其實在ASP.NET MVC中View的aspx與母版頁並不像WebForm中那樣緊密關聯。

例如我想更換一個aspx的母版頁,只要在Action中return 時指定所要使用的Master即可:

image

如圖我有2個Master文件,而/Views/Home/Index.aspx則為

image

這時我們如果想要使用Site2做為Master,只要在Action中return View指定masterName的參數即可:

   1: public ActionResult Index() {
   2:     return View(null,"Site2");
   3: }

自定義控件

RenderPartial

ASP.NET MVC中如果要自定義控件的話並不能像WebForm那樣用<cc1:xxxx />這樣來引用,而要使用Helper。

例如我們建立一個ct.ascx

image

其內容:

   1: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
   2: 我是ct.ascx

然后在Index.aspx里調用

   1: <%Html.RenderPartial("ct"); %>

OK(注意這里不是用<%=%>顯示而是執行語句)

最終顯示結果就是:

image

用戶自定義控件除了放在調用者同一目錄下,也可以放在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();//注意這里不是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運行起來,結果為:

image

文件的上傳

下面來說一下與本篇本無關的話題就是文件的上傳,我這里也不多做解釋了,代碼就是最好的語言。

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: }

 

 

 

顯示:image

提交后:image

再看看文件夾,文件已經上傳成功:

image

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM