zoukankan      html  css  js  c++  java
  • 通过调用多个操作创建 ASP.NET MVC 视图

    http://msdn.microsoft.com/zh-cn/library/ee839451(v=vs.100).aspx

    若要在ASP.NET MVC中创建视图,通常是调用一个使用模型来准备视图数据的操作方法。然后,该操作方法调用控制器的View 方法来创建视图。但是,您可能要调用不同的操作方法来创建视图的不同部分。 例如,假定有一个网页要显示最新新闻、天气和体育资讯。 在这种情况下,可能需要一个操作方法来处理新闻,一个处理天气,另一个则处理体育资讯。 这样,您就可以在不同的条件下呈现不同的视图,或将复杂的视图分解成若干个更小、更易于管理的小块

    本主题将描述如何从创建视图的子部分(子视图)的视图(父视图)中调用操作方法。

    父视图和子视图

    父视图是一个包含对返回子视图的操作方法的调用的视图。父视图包含所呈现的页的大多数 HTML。子视图只包含视图的一个部分所需的标记。

    例如,创建列表的子视图可能只包含列表的 HTML,如以下示例所示:

    <ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li>Item 3</li>
    </ul>

    所有其他标记(正文、标题等)都将包含在父视图中。

    调用操作和用于呈现子视图的RenderAction帮助器方法

    ASP.NET MVC 提供了 HTML 帮助器方法(扩展方法),这些方法可呈现大多数类型的 HTML 元素(例如窗体和链接),并简化了一些常规任务(如输入验证)。用于呈现子视图的 HTML 帮助器有两个:ActionRenderAction。这些 HTML 帮助器位于 ChildActionExtensions 类中。

    Action 方法将子视图以字符串的形式返回,然后可以直接呈现它。 RenderAction 方法就地呈现子视图。

    例如,假设您有一个名为 ChildList 的子视图,它由上一节中显示的 HTML 组成。控制器包含以下用于呈现子视图的操作方法:

    public ActionResult ChildList()
    {
        return View();
    }

    请注意,在控制器中,没有用于呈现父视图或子视图的特定方法。您首先呈现父视图,父视图然后呈现所需的子视图。

    若要调用操作方法并在父视图中呈现子视图,既可以使用 Action 帮助器方法,也可以使用 RenderAction 帮助器方法,如以下示例中所示:

    // One alternative (renders a string)
    <%= Html.Action("ChildList") %>
    
    //Another alternative (renders in place)
    <% Html.RenderAction("ChildList"); %>

    请注意,由于 Html.Action 帮助器方法返回一个字符串,所以等号 (=) 是必需的。

    下面是示例截图:

    image

    image

    image

    将参数传递给帮助器方法

    可以从父视图中的多个地方调用相同的操作方法,并向其传递参数以指定要呈现的内容。ActionRenderAction 都具有接受一个对象的方法重载,该对象包含参数名称和值对。下面的示例演示了调用 Display 操作方法的 RenderAction 方法的标记。在这种情况下,此标记传递包含子视图的名称的值的匿名对象,以便呈现相应的部分。此标记呈现一个“news”部分并紧随其后呈现“weather”部分。

    <% Html.RenderAction("Display", new { section = "News" }); %>
    <% Html.RenderAction("Display", new { section = "Weather" }); %>

    Display 操作方法可能与下面的示例类似:

    public ActionResult Display(string section)
    {
        return View(section);
    }

    下面是示例截图:

    image

    调用其他的控制器或区域的操作方法

    可以调用位于除当前控制器以外的控制器中的操作方法。若要执行此操作,可调用 RenderAction 方法的重载,此方法允许您指定要使用的操作方法和控制器的名称。下面的示例演示了调用 SectionController 类的 Display 操作方法的标记。第一个参数(字符串)是操作方法的名称,第二个参数(也是字符串)是控制器的名称。

    <% Html.RenderAction("Display", "Section"); %>
    如果您需要的操作方法位于其他区域中,则可以如下所示在一个对象中传递该区域名称:
    <% Html.RenderAction("Display", new { area = "Navigation" }); %>
    通过使用 RenderAction 方法的不同重载,还可调用不同区域中的不同控制器。
  • 相关阅读:
    BZOJ 3205 [Apio2013]机器人 ——斯坦纳树
    BZOJ 3782 上学路线 ——动态规划 Lucas定理 中国剩余定理
    HDU 1423 Greatest Common Increasing Subsequence ——动态规划
    BZOJ 3309 DZY Loves Math ——莫比乌斯反演
    POJ 1038 Bugs Integrated, Inc. ——状压DP
    POJ 3693 Maximum repetition substring ——后缀数组
    POJ 2699 The Maximum Number of Strong Kings ——网络流
    POJ 2396 Budget ——有上下界的网络流
    BZOJ 4650 [Noi2016]优秀的拆分 ——后缀数组
    源码安装python
  • 原文地址:https://www.cnblogs.com/luqingfei/p/2973379.html
Copyright © 2011-2022 走看看