ASP.NET MVC 重点教程一周年版 第十一回 母版页、用户自定义控件及文件上传

母版页(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 系列的随时更新

时间: 2024-10-31 18:38:07

ASP.NET MVC 重点教程一周年版 第十一回 母版页、用户自定义控件及文件上传的相关文章

ASP.NET MVC重点教程一周年版 第十一回 母版页、用户自定义控件及文件上传

母版页(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中r

ASP.NET MVC重点教程一周年版 第八回 Helper之演化

凡事出现必有原因 就像Filter,它是为了解决在一类的Action之前或之后执行统一的代码而产生的. 而Helper则是为了方便View的开发而产生的. 下面我们来解决几个问题,来看看Helper是怎么演化出来的. 起 题目:如何在View中写一个超级连接连接到主页? 这个问题看起来很好回答: <a href="/home/index">首页</a> 承 其实上面这种不能称之为方案的写法其实是最好的,没有调用任何的方法,仅用纯的HTML就解 决了问题. 但是如

ASP.NET MVC重点教程一周年版 第七回 UrlHelper

这节讲 一下ASP.NET MVC中的Helper. 何谓Helper,其实就是在View中为了实现一些灵活功能而写的方法组. 其实ASP.NET MVC的View是Aspx的页面,本身可以声明定义方法,那为什么要有Helper呢? 其实无非是将界面与逻辑分离,而且Asp.net MVC也并不只支持Aspx一种View(还可以扩展出来 很多),在扩展包中,也有Castle的NVelocity引擎和Boo,以及ViewSpark的页面. 所以,如果在Aspx中定义方法的话会影响其扩展性和可移植性.

ASP.NET MVC重点教程一周年版 第六回 过滤器Filter

在Asp.netMvc中当你有以下及类似以下需求时你可以使用Filter功能 判断登录与否或用 户权限 决策输出缓存 防盗链 防蜘蛛 本地化与国际化设置 实现动态Action Filter是一种声明式编程方式,在Asp.net MVC中它只能限制于Action(或 它的Controller). Filter要继承于ActionFilterAttribute抽象类,并可以覆写void OnActionExecuting(ActionExecutingContext)和 void OnActionE

ASP.NET MVC重点教程一周年版 第三回 Controller与View

这节我们让ASP.NET MVC真正的跑起来 一.新建Controller 首先我们自己新建一 个新的Controller在Controllers上点右键,添加,Controller选项 之后出现一个对话框: 这里我们将 之起名为EiceController 附注一下,这里是个纯广告,无兴趣可略过此行:www.eice.com.cn 为您建立Web2.0社交网站 默认生成的代码如下: //记不记得前面讲过的,所有 Controller都要继承于Controller类 public class E

ASP.NET MVC 重点教程一周年版 第十回 请求Controller

    其实我们通常遇到的请求方式无非get/post,但是有很多Web开发人员仍然对二者分不清.     get即通过URL中的QueryString向服务器端传值的方式,它的数据是可见的,可post则是通过一个postdata包向服务器传值,post方式可以传送更多数据(如上传文件),也更安全(如登录).     本文将演示各种通过客户端页面(即最终生成的页面)向Controller提交请求以及在Controller中接受的方式. 约定     本文所有的示例都将是演示一个登录过程,但并不关

ASP.NET MVC 重点教程一周年版 第六回 过滤器Filter

在Asp.netMvc中当你有以下及类似以下需求时你可以使用Filter功能 判断登录与否或用户权限 决策输出缓存 防盗链 防蜘蛛 本地化与国际化设置  实现动态Action Filter是一种声明式编程方式,在Asp.net MVC中它只能限制于Action(或它的Controller). Filter要继承于ActionFilterAttribute抽象类,并可以覆写void OnActionExecuting(ActionExecutingContext)和 void OnActionEx

ASP.NET MVC 重点教程一周年版 第七回 UrlHelper

这节讲 一下ASP.NET MVC中的Helper. 何谓Helper,其实就是在View中为了实现一些灵活功能而写的方法组. 其实ASP.NET MVC的View是Aspx的页面,本身可以声明定义方法,那为什么要有Helper呢? 其实无非是将界面与逻辑分离,而且Asp.net MVC也并不只支持Aspx一种View(还可以扩展出来很多),在扩展包中,也有Castle的NVelocity引擎和Boo,以及ViewSpark的页面. 所以,如果在Aspx中定义方法的话会影响其扩展性和可移植性.而

ASP.NET MVC 重点教程一周年版 第三回 Controller与View

这节我们让ASP.NET MVC真正的跑起来 一.新建Controller 首先我们自己新建一个新的Controller在Controllers上点右键,添加,Controller选项   之后出现一个对话框:   这里我们将之起名为EiceController 附注一下,这里是个纯广告,无兴趣可略过此行:www.eice.com.cn为您建立Web2.0社交网站 默认生成的代码如下: //记不记得前面讲过的,所有Controller都要继承于Controller类 public class E