ASP.NET MVC母版页变量作用域

5

我不明白我的.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>

...

3
能否请那位给我点踩的人解释一下,这样我就可以改正我的错误了吗? :) - Jimbo
2个回答

0

根据我的观察,Master页面中使用的任何变量都可以在其XAML文件和cs文件中访问。

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

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

我不认为这回答了问题。这要求在代码后台中定义一个属性,但示例从未使用它(而且也不应该需要)。 - Arturo Torres Sánchez

0

我认为这并没有回答问题。我们已经在主页面中了,为什么还需要再定义一次呢? - Arturo Torres Sánchez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接