当前位置:  开发笔记 > 编程语言 > 正文

ASP.NET MVC中runat ="server"标签的状态是什么?

如何解决《ASP.NETMVC中runat="server"标签的状态是什么?》经验,为你挑选了1个好方法。

ASP.NET MVC上的一些文本声明"没有runat服务器标签",即使这篇MSDN文章也说过,在该语句的正上方,在HEAD元素中有一个带有runat服务器标签的代码示例:

http://msdn.microsoft.com/en-us/magazine/cc337884.aspx

在我读过的StackOverflow对话中

"你想使用"runat = server"控件的事实意味着你应该做一个传统的ASP.NET应用程序.

当然,在Site.Master页面中,ContentPlaceHolders中有runat服务器属性.

在runat服务器方面我唯一看不到ASP.NET MVC的是每个.aspx页面/视图上普遍存在的FORM runat ="server"标签.

但是,ASP.NET MVC中的其余runat服务器标签怎么样呢?当人们说ASP.NET MVC没有这些时,人们的意思是什么?



1> Simon_Weaver..:

如果在任何元素(例如DIV)上使用runat ="server"标记,它将在编译页面中将该代码呈现为单独的方法.

如果您要转换"遗留"代码,最好立即删除所有runat标记,否则最终会出现以下代码导致错误的情况.

<% foreach (var cat in cats) { %>
    
<%= cat.name %> is a <%= cat.breed %>
<% } %>

这段代码无法告诉你一些'cat'超出范围的疯狂.最后,当你查看完整生成的代码时,你会发现它

已经被生成为它自己的整个方法 - 这当然是一个不同的范围,看不到猫.

返回MVC应用程序的默认模板:

您将看到当前模板为您提供以下内容head:


    
    <%= Html.Encode(ViewData["Title"]) %>
    

这让我想知道 - 如果我们使用<%=语法将标题直接写入title标签 - 那么为什么我们需要让它运行?

事实证明,我怀疑代码隐藏head在标题标记内部查找现有值(这里可以输出<%= Html.Encode(ViewData["Title"]) %>.如果找到一个(MVC模板中的所有样本视图都是这种情况)那么它如果没有标题(如果ViewData ["Title"]为空或空),它将默认为Title属性在视图中定义的任何内容:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/RRMaster.Master" 
Title="View Products" AutoEventWireup="true" CodeBehind="ViewProduct.aspx.cs"
Inherits="RR_MVC.Views.Products.ViewProduct" %>

在我的母版页中,我会删除runat='server'标记 - 因为我不认为我会想要从视图的Title属性填充我的页面标题.但是我暂时没有做好这个有关这个主题的Phil的承诺博客文章 - 如果runat服务器给了我任何对我的CSS和JS有用的东西.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有