视图内变量的范围是什么?

2023-12-31

如果我在 ASP.NET MVC 视图中有如下代码:

<%
    bool admin = false;
    if (ViewData.ContainsKey("isAdmin"))
    {
        admin = (bool)ViewData["isAdmin"];
    }
    if (admin)
    {
%>
<%--
    ... generate table of html
--%>

然后在页面下方,我在另一个代码渲染块中创建另一个脚本<% %>,我可以重复使用吗admin变量,它会记住页面上层的状态,还是范围就在<% %> blocks?


以下是我注意到的有关 MVC 范围的内容:

内容控件中声明的变量的作用域仅在内容控件内:

    <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    ScopeTest
    <%
        string testVar1 = "This is a test.";
     %>
     <%=   
     testVar1
    %>

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <h2>ScopeTest</h2>
The below reference to the testVar1 will cause a parser error, because the variable is out of scope.
<%=testVar1 %>
</asp:Content>

**在没有 MasterPage 的视图页面中,在 runat="server" 控件中声明的变量仅在该控件中可用。在 runat="server" 控件外部声明的变量对该控件不可用。

否则,声明的变量在整个页面中都可用。**

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>

<!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" >

<%
    string strPageScope = "PageScope Variable.";
     %>

<head runat="server">

[HEAD]<br />
    <title>ScopeTest2</title>
    <%
        string strHeadScope = "Head Scope...";        
         %>

         This WORKS: 
         <%=
             strHeadScope %>
             <br />


            ViewData available everywhere:
            <%=
                     ViewData["VDScope"].ToString() 
                %> 

             <br />


           strPageScope is NOT Available BECAUSE THE RUNAT=SERVER:
           <%
               //Response.Write(strPageScope);
               %>

             <br />
             [END OF HEAD]<br />
</head>
<body>
[BODY START]<br />

    strHeadScope NOT AVAILABLE, BECAUSE THE HEAD HAS RUNAT="SERVER" IN IT.
    <%
        //Response.Write(strHeadScope);
     %>
<br />
ViewData is available everywhere:
            <%
                  Response.Write(   ViewData["VDScope"].ToString());
                %> 
            <br />

    <div>
        <%
            string strBodyVar = "Testing Var Declared in Body.";
             %>

    </div>

        <%

            Response.Write(strBodyVar);

            %>

            <br />

            Page Scope works:
            <%=
    strPageScope
    %>
    <br />
    [END BODY] 
</body>
</html>

控制器代码,如果好奇的话:

公共 ActionResult 范围测试() { 返回视图(); }

public ActionResult ScopeTest2()
{

    ViewData["VDScope"] = "ViewDataScope";

    return View();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

视图内变量的范围是什么? 的相关文章

  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • MVC中无法从ViewBag中提取数据

    我试图在提交之前从 ViewBag 中提取数据并通过 JS 将其插入表单隐藏字段中 这不起作用 在调试时 我发现 JS 表达式的一部分被忽略了 因此 var 被评估为空字符串 这是 JS 部分 它应该执行分配 function setid
  • jsFiddle 中的 jQuery 不显眼的自定义适配器和方法

    我无法使 jsFiddle 工作 但它可以在浏览器中工作 http jsfiddle net vtortola jYq2X http jsfiddle net vtortola jYq2X 我正在尝试添加新的自定义规则来比较两个字段 自定义
  • 在 PHP 中使用可变变量是不好的做法吗?

    例如 一个简单的MVC类型系统 api class method使用重写为 PHP 变量 htaccess nginx conf 然后做类似的事情
  • 在路由mvc 4中添加公司名称

    我一直在尝试为 Facebook 等用户提供在 URL 中添加公司名称的选项 http localhost 50753 MyCompany Login 我尝试过不同的网址 但没有成功 routes MapRoute name Default
  • python中函数变量的作用域

    假设我们有两个函数 def ftpConnect ftp FTP server ftp login ftp cwd path def getFileList ftpConnect files ftp nlst print files 如果我
  • 有什么方法可以处理 ASP.Net MVC 中的 Put 和 Delete 动词吗?

    只是想知道是否有人知道真正宁静的 Put delete 实现 asp net mvc Preview 5 最好 查看 mvccontrib 项目 http www mvccontrib org http www mvccontrib org
  • 从 PHP 访问 JavaScript 变量

    我需要访问一个JavaScript变量与PHP 这是我当前正在尝试的代码的精简版本 该版本不起作用 我对 JavaScript 和 PHP 都是新手 所以我非常感谢任何建议 UPDATE 好吧 我想我过于简化了 我想做的是创建一个表单 提交
  • Ajax 长轮询无法正常工作

    我正在 MVC 2 中使用长轮询开发一个简单的陌生人聊天应用程序 如果我在不同的浏览器中打开应用程序 它在我的开发机器上工作正常 我的意思是 如果我在 IE 和 mozilla 中加载应用程序 它工作正常 如果我在浏览器的两个选项卡 例如
  • ASP.NET MVC 母版页数据

    我使用 ASP NET MVC 越多 我就越喜欢它 然而 在母版页上显示模型数据的情况下 似乎有多种方法可以实现 我不确定最佳解决方案 我的示例是一个商业网站 我想在每个页面上输出产品类别列表 并显示访问者购物车的状态 在 ASP NET
  • 批处理 - 将 dir 命令的输出存储到变量 - 目录列表中

    我需要将整个目录列表存储到一个变量中 然后将所述变量作为参数传递给另一个脚本 直接或首先将 dir 的输出存储到文本文件中 然后执行如下操作 dir path todir gt temp txt set p VAR
  • asp.net mvc GET 请求上的 formcollection 应该为空

    我正在发布一个简单的操作 public void Login FormCollection formCollection 即使查询字符串值很少 formcollection Count is 0 是靠行为吗 FormCollection 使
  • WebActivator PreApplicationStartMethod 不起作用

    我正在按照 onin 架构制作一个新项目 我有一个名为 bootstrapper 的单独项目 其中包含 IOC 和 WebActivator 我的问题是包含 WebActivator 的类甚至没有在调试中加载 也许我错过了什么 assemb
  • 删除或替换 RouteTable 中的现有路由

    我得到了一个 ASP NET MVC 2 0 Preview 1 应用程序 并开始创建一些包含自己的路由的区域 我希望有一种方法可以在主项目中覆盖这些路线 我当然不能添加同名的新路线 我可以看到 RouteTable Routes Remo
  • 类变量在其定义范围内?

    这可能是一个愚蠢的问题 我正在尝试制作文本泥 我需要每个 Room 类包含其他 Room 类 以便在尝试移动到它们或从它们获取信息时可以引用 但是 我不能这样做 因为我显然无法在其定义中声明一个类 那么 我该怎么做呢 当我说我做不到时 我的
  • mvc中基于远程验证的错误

    这是我的控制器代码 AcceptVerbs HttpVerbs Post public JsonResult CheckBuildingName var isUnique true string buildingName Request F
  • 如何在 ASP.NET MVC 5 中实现简单的身份验证

    我有一个带有 SQL Server 数据库的现有项目 带有数据库优先的 EF 工作单元和服务层 我需要添加 ASP NET MVC 项目并使用现有服务来验证用户身份 我发现了不同的复杂决定 我需要在身份中使用我的服务或在没有身份的情况下实现
  • MSMQ,消息被放入队列并消失,但从未被服务合约拾取

    我有一个本地私人队列 我还在 MVC 应用程序内有一个 WCF 服务 它使用 msmqIntegrationBinding 侦听队列 问题是 当消息排队时 服务契约永远不会被调用 但消息很快就会消失 该消息不在有害队列中 这是我声明与队列的
  • MVC 5 Razor 活动导航选项卡

    我一直在尝试突出显示我的项目中的活动导航选项卡 我的任务是更新旧网站而不更改为引导程序 这是我的经验所在 我找到了一个包含我需要的大部分内容的示例 目前 唯一具有 选定类别 的选项卡是 主页 选项卡 当我单击另一个选项卡时 主页 选项卡不再
  • Global.asax 中 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters) 的目的是什么 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我读过类似的问题RegisterGlobalFilters 的目的是什么 https stackoverflow com questi

随机推荐

  • 检测到重入

    我在设置 Web 浏览器控件的属性时收到 检测到重入 MDA 错误 仅当我调用 SetWindowsHookEx 来挂钩同一线程中的某些拨号盘时 才会发生这种情况 通常 此挂钩代码工作正常 但与 Webbrowser Control 配合使
  • 使用带有 XLSX.js 的 Alasql JavaScript 库导出到 csv 不适用于 Safari。 - Angularjs

    我想在我的应用程序中导出 csv 格式的表数据 我已将 Alasql 库与 XLSX js 一起使用 它适用于所有现代浏览器 Chrome Firefox 但不适用于 Safari None
  • 从 http://xbrl.sec.gov/ 搜索所有埃德加数据

    我需要从 xbrl 站点以 XML 格式或 RSS Feed 形式获取所有 Edgar 搜索数据 这与此链接上的搜索相同http www sec gov edgar searchedgar cik htm http www sec gov
  • svn 无法在文件中设置位置指针

    我遇到了一个 svn 存储库的问题 该存储库到目前为止一直运行良好 我收到错误 svnadmin Can t set position pointer in file repository db revs 0 783 Invalid arg
  • GLSL 片段着色器语法错误

    以下简单的片段着色器代码失败 在日志中留下一条无信息的消息 ERROR 0 1 gl Color syntax error syntax error void main vec4 myOutputColor gl Color gl Frag
  • 如何更改组合框控件中的下拉按钮?

    如何更改下拉按钮ComboBox控件 C Windows 窗体 我有一个自定义按钮 我想在ComboBox而不是默认的下拉按钮 我认为汉斯 帕桑特的解决方案就是这样 从这里 http social msdn microsoft com fo
  • 从 Android Studio 将 Libgdx 游戏导出为可执行 Jar

    好吧 我使用 Libgdx 制作了一个游戏 我打算将它作为一个 Android 应用程序 这就是我使用 Android Studio 的原因 但我想让我没有 Android 手机的朋友尝试一下 该项目已经针对桌面和 Android 设置 因
  • iOS5 中的“应用程序试图以模态方式呈现活动控制器”错误

    我遇到一个错误 导致我的应用程序仅在 iPad 上的 iOS5 下崩溃 当用户点击 uibarbuttonitem 中的项目时 将调用以下代码 void optionSelected NSString option self optionP
  • AppEngine 响应时间差异

    我正在考虑使用 AppEngine 来部署我正在开发的网络应用程序 作为我对 AppEngine 平台调查的一部分 我一直在检查简单请求的响应时间 为此 我编写了一个简单的 PING servlet SuppressWarnings ser
  • R:计算抛硬币的频率

    我正在使用 R 编程语言 我模拟了这个包含 1000 次硬币翻转的数据集 然后我计算了 2 个翻转序列 的数量 Coin lt c H T Results sample Coin 1000 replace TRUE My Data data
  • Node.js 隔离物是什么?为什么他们现在都死了?

    在0 7 0中 实验分离支持 http blog nodejs org 2012 01 16 node v0 7 0 unstable 原文如此 已推出 除了一些模糊的想法之外 我一直不理解这一点 即它们提供了类似线程的功能 但没有线程的问
  • g.i.cs 文件丢失,类不再包含 InitializeComponent 的定义

    我在业余时间开发了一个 UWP 项目 以掌握 UWP MVVM 和 Prism 该项目最初非常经典 没有使用 MVVM 和 Prism 我一直在努力将这两个纳入该项目 我一直依赖着https msdn microsoft com en us
  • 如何在ARKit中使用环境贴图?

    ARKit 2 0 添加了一个名为 AREnvironmentProbeAnchor 的新类 阅读它的说明 似乎 ARKit 可以自动收集环境纹理 立方体贴图 我相信我们现在可以创建一些反映真实环境的虚拟对象 但我仍然不清楚这是如何工作的
  • Swift 包管理器有本地缓存​​吗?

    每次我加载新包时 Xcode 都会从 Github 重新下载所有依赖项 而不是重用我已经为其他项目加载的一些依赖项 例如 我希望当我引用时 package name SwiftyJSON url https github com Swift
  • 如何查找表的当前大小(在内存中)?

    我有一个使用 engine MEMORY 指定的内存表 我可以运行什么命令来了解它当前占用了多少空间 最大尺寸怎么样 SHOW TABLE STATUS LIKE tablename G 其中 tablename 是您要检查的表的名称
  • 如何使用 python 库找到骨架图像中的循环?

    我有很多这样的骨架图像 我如何检测骨架中的循环 是否有 特殊 函数可以执行此操作 或者我应该将其实现为图表 如果只有图形选项 python图形库NetworkX可以帮助我吗 您可以利用骨架的拓扑结构 循环不会有洞 所以我们可以使用scipy
  • Keras ImageDataGenerator:随机变换

    我有兴趣通过随机图像转换来增强我的数据集 我正在使用 Keras图像数据生成器 https keras io preprocessing image imagedatagenerator 并且我在尝试申请时收到以下错误random tran
  • 俄罗斯方块棋子旋转算法

    表示和旋转俄罗斯方块游戏棋子的最佳算法 和解释 是什么 我总是发现片段轮换和表示方案令人困惑 大多数俄罗斯方块游戏似乎在每次旋转时都使用天真的 重新制作块数组 http www codeplex com Project ProjectDir
  • 使用 WPF 更改与窗口大小相关的字体大小?

    是否有可能 如果缩小窗口 FontSize 会变小 如果放大窗口 FontSize 会变大 将您的文本包裹在Viewbox
  • 视图内变量的范围是什么?

    如果我在 ASP NET MVC 视图中有如下代码 然后在页面下方 我在另一个代码渲染块中创建另一个脚本 我可以重复使用吗admin变量 它会记住页面上层的状态 还是范围就在 blocks 以下是我注意到的有关 MVC 范围的内容 内容控件