前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ASP.NET MVC 重点教程一周年版 第十一回 母版页、用户自定义控件及文件上传

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

作者头像
重典
发布2022-04-11 12:58:01
1.1K0
发布2022-04-11 12:58:01
举报
文章被收录于专栏:重典.NET重典.NET

母版页(Master)

1.母版页是与Controller无关的,母版页只是一个View文件,而没有任何Controller与之相对应。

2.其实在ASP.NET MVC中View的aspx与母版页并不像WebForm中那样紧密关联。

例如我想更换一个aspx的母版页,只要在Action中return 时指定所要使用的Master即可:

image
image

如图我有2个Master文件,而/Views/Home/Index.aspx则为

image
image

这时我们如果想要使用Site2做为Master,只要在Action中return View指定masterName的参数即可:

代码语言:javascript
复制
   1: public ActionResult Index() {
   2:     return View(null,"Site2");
   3: }

自定义控件

RenderPartial

ASP.NET MVC中如果要自定义控件的话并不能像WebForm那样用<cc1:xxxx />这样来引用,而要使用Helper。

例如我们建立一个ct.ascx

image
image

其内容:

代码语言:javascript
复制
   1: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
   2: 我是ct.ascx

然后在Index.aspx里调用

代码语言:javascript
复制
1: <%Html.RenderPartial("ct"); %>

OK(注意这里不是用<%=%>显示而是执行语句)

最终显示结果就是:

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

代码语言:javascript
复制
  1: public ActionResult CtAction() {
   2:     return PartialView();//注意这里不是View
   3: }

View(CtAction.ascx)

代码语言:javascript
复制
   1: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
   2:  
   3: 显示当前Action:<%=this.ViewContext.RouteData.Values["action"]%>

View(Index.aspx):

代码语言:javascript
复制
   1: <%
   2:     Html.RenderAction("ctaction","home"); %>

OK运行起来,结果为:

image
image

文件的上传

下面来说一下与本篇本无关的话题就是文件的上传,我这里也不多做解释了,代码就是最好的语言。

View:

代码语言:javascript
复制
   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):

代码语言:javascript
复制
   1: public ActionResult Process(HttpPostedFileBase up1)
   2: {//参数名与name名一致即可
   3:     up1.SaveAs(Server.MapPath("~/" + up1.FileName));
   4:     return Content(up1.FileName);
   5: }

显示:

image
image

提交后:

image
image

再看看文件夹,文件已经上传成功:

image
image

至此,我想ASP.NET MVC重典一周年版已经没有什么基础东西可以讲了,如果大家想进一步学习ASP.NET MVC,请关注Asp.net Mvc Framework 系列的随时更新

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2009-04-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 母版页(Master)
  • 自定义控件
    • RenderPartial
      • RenderAction
      • 文件的上传
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档