服务器标记不能包含结构我想为我网站上的图像使用CDN。问题是,有时我有像ImageButton这样的服务器控件,我想使用一个类来完全提取到CDN的路径。为此,我尝试这样做:我把标题弄错了。它仅在我使用<%#时有效(并且仅在我进行数据绑定时有效)。我怎么能这么容易做到呢?如何将CDN代码放在我的标记代码上?谢谢!有四个选项(除了我不推荐的“”样式数据绑定):在代码后面设置值。这会使ViewState膨胀,当然需要为控件的每个实例更改代码。使用自定义ExpressionBuilder。这不会使ViewState膨胀,但确实需要更改所有标记。使用控件适配器更改应用程序中任何位置的控件的行为;例如,通过在呈现控件之前修改ImageUrl属性。可以在不受ViewState影响的情况下完成。使用从ImageButton类继承的类,结合标记图,在应用程序的任何地方使用该类而不是原始类,并且不更改标记。可以在不受ViewState影响的情况下完成。最佳选择取决于您的应用程序的要求,但如果您想在站点范围内进行更改,我通常更喜欢控制适配器。这是一个例子,如果它有帮助的话:usingSystem;使用System.IO;使用System.Web.UI;使用System.Web.UI.WebControls;使用System.Web.UI.WebControls.Adapters;命名空间示例{publicclassImageButtonControlAdapter:WebControlAdapter{protectedoverridevoidBeginRender(HtmlTextWriterwriter){ImageButtonimage=this.ControlasImageButton;if((image!=null)&&!String.IsNullOrEmpty(image.ImageUrl)){////在这里决定要更改的对象//if(!image.ImageUrl.StartsWith("http")&&!image.ImageUrl.StartsWith("data:")){image.ImageUrl=ResourceManager.GetImageCDN(image.ImageUrl);}}基地.BeginRender(作家);使用App_Browers/adapter.browser中的以下条目将其配置到您的应用程序中:您的标记是:很酷,对吧?以防将来其他人遇到此线程,您可以通过用单引号而不是双引号将服务器标记括起来来获得所需的结果。原文:"/>新版本:'/>这适用于.Net4.0,但我认为它也适用于其他版本。您可以通过创建自己的代码表达式构建器来评估服务器标记中的代码。这非常简单。[ExpressionPrefix(“代码”)]publicclassCodeExpressionBuilder:ExpressionBuilder{publicoverrideCodeExpressionGetCodeExpression(BoundPropertyEntryentry,objectparsedData,ExpressionBuilderContextcontext){returnnewCodeSnippetExpression(entry.Expression);}}并在web.config中输入一个条目:这允许您使用如下语法:'>这是完整的解释:http://weblogs.asp.net/infinitiesloop/archive/2006/08/09/The-CodeExpressionBuilder.aspx当然,最好的方法是给imagebutton一个id,例如:然后在你的页面load中赋值imageurl:以上是C#学习教程:server标签不能包含结构共享的所有内容,如果对大家有用,需要详细了解C#学习教程,希望大家多多关注—voidPage_Load(...){if(!Page.IsPostback){IAgreeImageButton.ImageUrl=ResourceManager.GetImageCDN("iagree.PNG");}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: