none
关于格式不正确 RRS feed

  • 问题

  • <input id="btnEdit" type="button" runat=server onclick="location.href='edit.aspx?Guidstr=<%#DataBinder.Eval(Container.DataItem, "Guidstr")%>'" style="width: 70px" value="修改" />

    想问下,就这样的一个html的控件,原来是好的,但是想在cs文件里控制他显示隐藏,所以加了runat=server 然后就提示分析器错误消息: 服务器标记的格式不正确。

    到底哪里不正确?

    2010年8月3日 8:31

答案

  • 注意,对于 runat=server,即服务器端控件,其“属性绑定赋值”需要使用”完整的绑定“,不能使用“局部绑定”,对比下面的语法

    <input id="btnEdit" type="button" runat=server onclick=<%# DataBinder.Eval(Container.DataItem, "Guidstr", "location.href=‘edit.aspx?Guidstr={0}’")%> style="width: 70px" value="修改" />


    问题要简单,错误须详细@错误/异常/堆栈信息+操作系统+软件版本+all the context of the issue Hope Helpful | http://www.leoworks.net
    2010年8月4日 0:14

全部回复

  • 少了双引号?

    其他没啥问题。


    family as water
    2010年8月3日 8:40
  • 少了双引号?

    其他没啥问题。


    family as water

    你说runat=server 这个?这个加不加无所谓的吧,加了也一样的啊,

    这个是按钮在repeater控件里的

    2010年8月3日 8:55
  • 因为 runat=server 的元素不能包含 <% %> 标记。所以导致错误。如果要设置其隐藏/显示,直接用 JavaScript 就可以了。不用拿到 ASP.NET 服务器端去做。
    Mark Zhou
    • 已建议为答案 DK. Da 2010年8月3日 15:03
    2010年8月3日 10:04
  • 因为 runat=server 的元素不能包含 <% %> 标记。所以导致错误。如果要设置其隐藏/显示,直接用 JavaScript 就可以了。不用拿到 ASP.NET 服务器端去做。
    Mark Zhou


    并不是这样  

    您吧input 设置为runat=server 了  那么onclick 就不再指代客户端的事件  而变成服务端的了  这样其中的js必然无法识别。  您可以把onlick换成onclientclick试验下

     

     


    成为 Microsoft V Dash了。。。 欢迎各位前辈同事在OCS加我
    2010年8月3日 10:33
  • 因为 runat=server 的元素不能包含 <% %> 标记。所以导致错误。如果要设置其隐藏/显示,直接用 JavaScript 就可以了。不用拿到 ASP.NET 服务器端去做。
    Mark Zhou


    并不是这样  

    您吧input 设置为runat=server 了  那么onclick 就不再指代客户端的事件  而变成服务端的了  这样其中的js必然无法识别。  您可以把onlick换成onclientclick试验下

     

     


    成为 Microsoft V Dash了。。。 欢迎各位前辈同事在OCS加我


    谢谢,我换成onclientclick试过也还是一样的哦,还有

    <input id="btnEdit" type="button"  onclick='<%# Eval("BoardID","EditColumn({0})") %>' style="width: 70px" value="修改" runat=server/>

    这个是可以的,就上面那种方式不行,不知道什么原因

    2010年8月3日 12:30
  • 樓上好幾位都錯了.......

    或是只對了一部分.......

     

    上面這段代碼能不能跑就只差在單引號跟雙引號,

    你只要包了雙引號在具有 runat="server" 這個屬性的控件裡頭,那被雙引號包住的都會被當作是屬性的值,也就是他說的服務器標記的一部分。

     

    如果用單引號就不同了,就不會被當作是伺服器標記,

    在編譯的時候就過得去,而且在 client 端也可以正確被瀏覽器所解讀,

    因為瀏覽器不管單引號還是雙引號都吃~~~!!!


    小中中的學習筆記
    • 已建议为答案 DK. Da 2010年8月3日 15:08
    2010年8月3日 15:08
  • 注意,对于 runat=server,即服务器端控件,其“属性绑定赋值”需要使用”完整的绑定“,不能使用“局部绑定”,对比下面的语法

    <input id="btnEdit" type="button" runat=server onclick=<%# DataBinder.Eval(Container.DataItem, "Guidstr", "location.href=‘edit.aspx?Guidstr={0}’")%> style="width: 70px" value="修改" />


    问题要简单,错误须详细@错误/异常/堆栈信息+操作系统+软件版本+all the context of the issue Hope Helpful | http://www.leoworks.net
    2010年8月4日 0:14
  • 注意,对于 runat=server,即服务器端控件,其“属性绑定赋值”需要使用”完整的绑定“,不能使用“局部绑定”,对比下面的语法

    <input id="btnEdit" type="button" runat=server onclick=<%# DataBinder.Eval(Container.DataItem, "Guidstr", "location.href=‘edit.aspx?Guidstr={0}’")%> style="width: 70px" value="修改" />


    问题要简单,错误须详细@错误/异常/堆栈信息+操作系统+软件版本+all the context of the issue Hope Helpful | http://www.leoworks.net
    谢谢,可以了
    2010年8月4日 0:57
  • 因为 runat=server 的元素不能包含 <% %> 标记。所以导致错误。如果要设置其隐藏/显示,直接用 JavaScript 就可以了。不用拿到 ASP.NET 服务器端去做。
    Mark Zhou

    没有仔细看代码。。。现在发现用的居然是 <%$ %>。。。服务器元素不支持 <% %>,<%: %> 以及 <%= %>,支持 <%# %> 和 <%$ %>。抱歉,误导了。。。
    Mark Zhou
    2010年8月4日 9:17