网站发布后验证码不显示

 

解决办法:<%@PageCodeFile="***"Inherits="***" > 
这时候,ASP.net 就需要找 CodeFile 中指定的文件,以便动态编译,但是找不到,所以就报上述错误了。

对于开发时,即页面的逻辑代码 cs 文件存在的时候,下属两种写法都没有问题。
<%@ Page Language="C#" AutoEventWireup="true" 
Codebehind="index.aspx.cs" Inherits="Community.IndexHomePage.index" %>

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="Community.IndexHomePage.index" %>

但是部署到站点后,我们不会部署 cs 文件,这时候,后一种写法就会报找不到文件的错误了。除非你把 cs 也部署出去,否则就会报编译时错误,找不到文件...

 

InheritsCodeFileCodeBehind的区别

Inherits(继承)

Msdn解释:定义页面继承的代码隐藏类。它可以是从Page类派生的任何类。此特性与CodeFile特性一起使用,后者包含指向代码隐藏类的源文件路径。Inherits特性在使用c#作为页面语言时区分大小写。如果 Inherits 特性不包含命名空间,ASP.NET 将检查 ClassName 特性是否包含命名空间。如果包含,ASP.NET 将尝试使用 ClassName 特性的命名空间加载 Inherits 特性中引用的类。(这假定 Inherits 特性和 ClassName 特性使用同一命名空间。)

Inherits 属性用于定义当前 Web 窗体所继承的代码隐藏类(该类是 System.Web.UI.Page 的派生类)
这个 inherits 属性只用于采用代码隐藏方式编写的 Web 窗体,也就是,如果你的代码全都是在 Web 窗体的
<script runat="server"></script> 
标签中,就不必用这个属性了。

CodeFile 

msdn解释:指定指向页引用的代码隐藏文件的路径。此特性与 Inherits 特性一起使用,用于将代码隐藏源文件与网页相关联。此特性仅对编译的页有效。

此特性用于网站项目。

Codebehind

msdn解释:指定包含与页关联的类的已编译文件的名称。该特性不能在运行时使用。此特性用于 Web 应用程序项目。

Codebehind 属性并不是一个真正的 ASP.NET 属性,在ASP.NET 文档中是找不到它的。
它其实只是一个 Visual Studio .NET 属性,
Visual Studio .NET 
就是借用这个属性来很好地跟踪管理项目中的 Web 窗体和与之相对的代码隐藏文件,
比如当你在设计环境中往 Web 窗体上放入一个服务器控件时,
Visual Studio .NET 
将自动找到与该 Web 窗体相对应的代码隐藏文件,并自动插入相关的代码。

 

 

本文出自 “HDDevTeam” 博客,谢绝转载!

你可能感兴趣的:(开发,网站,验证码,动态)