zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    header头参数 确定该文件类型
    phpexcel 使用说明
    杂七杂八 各种小知识
    php 后知后觉
    限制SSH登录失败次数
    DES和AES密码之间的区别 & 对称加密算法DES、3DES和AES 原理总结
    加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用
    加密算法学习总结---DES-CBC加密算法 & 分组加密的四种模式
    Linux下进程间通信方式——共享内存
    fork()+pipe() --&gt; 父子进程间通过管道通信 Linux系统编程pipe()
  • 原文地址:https://www.cnblogs.com/BrokenIce/p/5682538.html
Copyright © 2011-2022 走看看