ASP.NET MVC 重點教程一周年版 第十一回 主版頁面、使用者自訂控制項及檔案上傳

來源:互聯網
上載者:User
文章目錄
  • 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: }

自訂控制項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();//注意這裡不是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.NET MVC重典一周年版已經沒有什麼基礎東西可以講了,如果大家想進一步學習ASP.NET MVC,請關注Asp.net Mvc Framework 系列的隨時更新

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.