这个问题之所以存在,是因为它确实存在 具有历史意义,但事实并非如此 被认为是一个很好的主题问题 因为是本网站,所以请不要使用 作为证据,你可以问类似的问题 这里的问题。 更多信息:https://stackoverflow.com/faq
总有一些功能在边缘场景中很有用,但正是因为这个原因,大多数人都不知道它们。我要求的是课本上通常没有教过的特性。
你知道的是什么?
这个问题之所以存在,是因为它确实存在 具有历史意义,但事实并非如此 被认为是一个很好的主题问题 因为是本网站,所以请不要使用 作为证据,你可以问类似的问题 这里的问题。 更多信息:https://stackoverflow.com/faq
总有一些功能在边缘场景中很有用,但正是因为这个原因,大多数人都不知道它们。我要求的是课本上通常没有教过的特性。
你知道的是什么?
当前回答
如果您放置一个名为app_offline.htm的文件 在一个web应用程序目录的根目录,ASP。NET 2.0+将关闭应用程序并停止对该应用程序的任何新传入请求的正常处理,只显示所有新请求的app_offline.htm文件的内容。
这是在将更改重新部署(或回滚)到生产服务器时显示“站点暂时不可用”通知的最快速和最简单的方法。
另外,正如marxidad所指出的,确保文件中至少有512字节的内容,这样IE6才能正确地呈现它。
其他回答
基于目标浏览器设置服务器控件属性等。
<asp:Label runat="server" ID="labelText" ie:Text="这是ie文本" mozilla:Text="这是Firefox文本" 文本="这是一般文本" />
这句话让我有点吃惊。
CompilationMode="Never"是一个在某些ASP中至关重要的特性。网网站。
如果你有ASP。在asp.net应用程序中,ASPX页面经常通过CMS或其他发布系统生成和更新,使用CompilationMode="Never"是很重要的。
如果没有此设置,ASPX文件更改将触发重新编译,这将快速使您的appdomain重新启动。这可以清除会话状态和httpruntime缓存,更不用说重新编译引起的延迟。
(为了防止重新编译,你可以增加numRecompilesBeforeAppRestart设置,但这不是理想的,因为它会消耗更多的内存。)
这个特性需要注意的一点是,ASPX页面不能包含任何代码块。为了解决这个问题,可以在自定义控件和/或基类中放置代码。
在ASPX页面不经常更改的情况下,这个特性基本无关紧要。
模板化用户控件。一旦你知道它们是如何工作的,你就会看到各种各样的可能性。下面是最简单的实现:
TemplatedControl.ascx
这里最棒的事情是使用简单而熟悉的用户控件构建块,并能够使用HTML和一些占位符来布局UI的不同部分。
<%@ Control Language="C#" CodeFile="TemplatedControl.ascx.cs" Inherits="TemplatedControl" %>
<div class="header">
<asp:PlaceHolder ID="HeaderPlaceHolder" runat="server" />
</div>
<div class="body">
<asp:PlaceHolder ID="BodyPlaceHolder" runat="server" />
</div>
TemplatedControl.ascx.cs
这里的“秘密”是使用ITemplate类型的公共属性,并知道[ParseChildren]和[PersistenceMode]属性。
using System.Web.UI;
[ParseChildren(true)]
public partial class TemplatedControl : System.Web.UI.UserControl
{
[PersistenceMode(PersistenceMode.InnerProperty)]
public ITemplate Header { get; set; }
[PersistenceMode(PersistenceMode.InnerProperty)]
public ITemplate Body { get; set; }
void Page_Init()
{
if (Header != null)
Header.InstantiateIn(HeaderPlaceHolder);
if (Body != null)
Body.InstantiateIn(BodyPlaceHolder);
}
}
default . aspx
<%@ Register TagPrefix="uc" TagName="TemplatedControl" Src="TemplatedControl.ascx" %>
<uc:TemplatedControl runat="server">
<Header>Lorem ipsum</Header>
<Body>
// You can add literal text, HTML and server controls to the templates
<p>Hello <asp:Label runat="server" Text="world" />!</p>
</Body>
</uc:TemplatedControl>
你甚至会得到内部模板属性的智能感知。因此,如果您在团队中工作,您可以快速创建可重用的UI,以实现与您的团队已经从内置ASP中享受到的相同的可组合性。NET服务器控件。
MSDN示例(与开头的链接相同)添加了一些额外的控件和命名容器,但只有当您希望支持“中继器类型”控件时,才需要这样做。
VS阻塞的有效语法:
<input type="checkbox" name="roles" value='<%# Eval("Name") %>'
<%# ((bool) Eval("InRole")) ? "checked" : "" %>
<%# ViewData.Model.IsInRole("Admin") ? "" : "disabled" %> />
这似乎是一个巨大而模糊的问题…… 但我将在这里介绍Reflection,因为它允许我做一些非常强大的事情,如可插拔的DALs等。