【问题标题】:ASP.NET MVC Master Page Variable ScopeASP.NET MVC 母版页变量范围
【发布时间】:2014-04-25 08:13:49
【问题描述】:

我不了解 .Master 页面中变量的范围 - 谁能提供帮助?

在下面的示例中,settings 在实例化后的任何一种用法中都看不到:

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>

<% var settings = new SettingRepository(); %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">

    <meta name="description" content="<%: settings.metaDescription %>"/>

    <title>
        <asp:ContentPlaceHolder ID="TitleContent" runat="server" /> - <%: settings.pageTitle %>
    </title>

...

在下面的例子中settings只能在第一个用法中看到,而在第二个用法中不能看到:

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">

    <% var settings = new SettingRepository(); %>
    <meta name="description" content="<%: settings.metaDescription %>"/>

    <title>
        <asp:ContentPlaceHolder ID="TitleContent" runat="server" /> - <%: settings.pageTitle %>
    </title>

...

【问题讨论】:

  • 投反对票的人是否介意解释他投反对票的原因,以便我可以纠正我的错误行为? :)

标签: asp.net asp.net-mvc scope master-pages


【解决方案1】:

根据我的说法,您在母版页中使用的任何变量都可以访问其 XAML 文件和 cs 文件。

您可以像这样在其内容页面中访问它:

String variable=((MasterPageName).this.Master).variable;

【讨论】:

  • 我认为这不能回答问题。这要求在代码隐藏中定义一个属性,但示例从不使用它(也不应该)
【解决方案2】:

使用@MasterType 指令,如下所述:

http://msdn.microsoft.com/en-us/library/c8y19k6h.aspx

【讨论】:

  • 我认为这不能回答问题。我们已经在母版页了,为什么还要重新定义呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 2011-11-28
相关资源
最近更新 更多