我在这样的页面上有一个输入控件:
<input
type="button"
causesvalidation="false"
runat="server"
id="resetButton"
value="Iptal"
onclick='return
resetForm("<%=projectValidationSummary.ClientID%>");' />
渲染时
<input
name="ctl00$ContentPlaceHolder1$EditForm$resetButton"
type="button"
id="ctl00_ContentPlaceHolder1_EditForm_resetButton"
value="Iptal"
onclick="return resetForm("<%=projectValidationSummary.ClientID%>");" />
我在页面上使用<%=%>
标记,但它呈现为
"<%=%>"
有人能告诉我为什么会这样吗?
答案 0 :(得分:4)
&lt;%=%&gt;只能在文字html中使用,不能在服务器控件属性中使用。
相反,您应该使用数据绑定&lt;%#%&gt;,在您的情况下,我认为您尝试在客户端触发javascript函数,然后您的代码应如下所示:
<asp:button
causesvalidation="false"
runat="server"
id="resetButton"
text="Iptal"
onclientclick='<%# String.Format("return resetForm(\"{0}\");", projectValidationSummary.ClientID) %>' />
在服务器端,您应该使用此代码绑定属性(可能在Page.Load事件中):
if(!this.IsPostBack)
{
this.resetButton.DataBind();
}
答案 1 :(得分:3)
您不能将渲染块与值的文本混合和匹配。试试这个
onclick='<%= "return resetForm(\"" + projectValidationSummary.ClientID + "\");" %>'
答案 2 :(得分:3)
删除runat="server"
- 如果您正在进行文字书写(<%=
)
所以:
<input
type="button"
causesvalidation="false"
id="resetButton"
value="Iptal"
onclick="return resetForm('<%= projectValidationSummary.ClientID %>');" />
或者改为使用数据绑定:
<input
type="button"
causesvalidation="false"
id="resetButton"
runat="server"
value="Iptal"
onclientclick="return resetForm('<%# projectValidationSummary.ClientID %>');" />
//in code behind:
resetButton.DataBind();
.Net不喜欢除了面板之外的服务器渲染控件内的文字写入。
答案 3 :(得分:3)
由于你已经在使用runat =“server”,所以最好还是在代码隐藏中设置这个属性。
resetButton.attributes.add(“onclick”,“.....”);
答案 4 :(得分:1)
因为在resetForm中发生了字符串的HTML编码。
答案 5 :(得分:0)
这可能很明显,但您是否确保文件类型合适?即用于JSP的ASP或用于ASP的asp?
这应该在编码之前被编译器捕获。在编译页面之前是否可能存在预处理?您的ID已更改,并添加了名称元素...