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

ASP.NET MVC中的一些文本表示“没有runat服务器标签”,即使这个MSDN文章说这个,当在该语句之上时,在HEAD元素中有一个代码示例,带有一个runat服务器标签:

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

在StackOverflow对话中我读到

“The fact that you want to use
“runat=server” controls means that you
should be doing a traditional ASP.NET
app.

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

在ASP.NET MVC中,唯有我在runat服务器方面缺少的是每个.aspx页面/视图上无处不在的FORM runat =“server”标签。

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

解决方法

如果在ANY元素上使用一个runat =“server”标签,例如DIV,它将在编译页面中将该代码作为单独的方法呈现。

如果您正在转换“旧”代码,它是一个好主意,以清除所有的runat标签,否则你最终会遇到下面的代码给你一个错误。

<% foreach (var cat in cats) { %>
    <div runat="server">
         <span class="name"> <%= cat.name %> </span> is a
         <span class="breed"> <%= cat.breed %> </span>
    </div>
 <% } %>

这段代码不会告诉你一些关于“猫”超出范围的疯狂。最后,当您查看完整生成的代码时,您将看到< div>已经产生了自己的方法 – 这当然是不同的范围,没有猫。

返回到MVC应用程序的默认模板一秒钟:

你会看到当前的模板给你这个头:

<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title><%= Html.Encode(ViewData["Title"]) %></title>
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
</head>

这让我想知道 – 如果我们使用<%= syntax将标题直接写入标题标签 - 那么为什么我们需要使它成为runat? 事实证明,我怀疑head的代码隐藏在标题标签内的一个现有的值(这将在<%= Html.Encode(ViewData [“Title”])%&gt ;.一个(对于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的东西。

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....