【问题标题】:How to solve this: The server tag is not well formed如何解决:服务器标签格式不正确
【发布时间】:2017-05-12 19:14:43
【问题描述】:

我在 aspx 页面中有一个超链接。我这样编辑它:

 <asp:HyperLink ID="hypDuzenle" runat="server" 
         NavigateUrl='<%# String.Format("javascript:window.open('~/User/K/KPrintForm.aspx?
                    CD={0}&CT={1}&W={2}&SN={3}&MNR={4}&PNF={5}&MDT={6}',
                    'MsgWindow', 'width=200, height=100')", Eval("B_CD"), Eval("B_CZ"), 
                     Eval("B_WE"), Eval("B_SE"), Eval("MAT"), Eval("SAT"), Eval("MAN"))%>' 
                     ImageUrl="~/img/printer.png">
 </asp:HyperLink> 

但是我收到此错误消息:

解析器错误 说明:解析服务此请求所需的资源时出错。请查看以下特定的解析错误详细信息并适当地修改您的源文件。 解析器错误消息:服务器标签格式不正确。

问题可能出在哪里?

【问题讨论】:

  • 此超链接位于何处?你在 GridView 内部使用吗?
  • 是的,超链接位于 DevExpress AspxGridView 中。

标签: c# asp.net hyperlink


【解决方案1】:

将 asp:hyperlink 替换为普通的 html 标签链接:

<a href='<%# String.Format("javascript:window.open('~/User/K/KPrintForm.aspx?
                    CD={0}&CT={1}&W={2}&SN={3}&MNR={4}&PNF={5}&MDT={6}',
                    'MsgWindow', 'width=200, height=100')", Eval("B_CD"), Eval("B_CZ"), 
                     Eval("B_WE"), Eval("B_SE"), Eval("MAT"), Eval("SAT"), Eval("MAN"))%>'><img src="~/img/printer.png">
         </a>

【讨论】:

    【解决方案2】:

    更好的解决这个错误的方法是在后面的代码中设置值。

    <asp:HyperLink ID="hypDuzenle" runat="server" ImageUrl="~/img/printer.png">
    </asp:HyperLink>
    
    protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if(e.Row.RowType == DataControlRowType.DataRow)
        {
            HyperLink hypDuzenle=(HyperLink)e.Row.FindControl("hypDuzenle");
    
            string B_CD = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "B_CD"));
            string B_CZ = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "B_CZ"));
            string B_WE = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "B_WE"));
            string B_SE = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "B_SE"));
            string MAT = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "MAT"));
            string SAT = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "SAT"));
            string MAN = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "MAN"));      
    
            hypDuzenle.NavigateUrl="#";
            hypDuzenle.Attributes.Add("onclick", String.Format("javascript:window.open('"+ResolveUrl("~/User/K/KPrintForm.aspx")+"?CD={0}&CT={1}&W={2}&SN={3}&MNR={4}&PNF={5}&MDT={6}','MsgWindow', 'width=200, height=100')", B_CD, B_CZ, B_WE, B_SE, MAT, SAT, MAN));
        }
    }
    

    【讨论】:

    • 如果您针对代码 sn-ps 解释您更改的内容和/或您认为该代码有帮助的原因,您的答案会更好。不要只是给人们一条鱼,而是教他们如何钓鱼:-)
    • 我得到这个错误:服务器标签不能包含 结构。
    • 新窗口打开,ok。但是,主页内容消失了,并且页面中有一个 [Object] 文本。如何保存我的主页内容?
    • 好的,要保存主页内容需要分配 onclick 而不是 NavigateUrl。让我更新代码
    • 谢谢。另外,如何定义滚动条、地址栏可见性和不可调整大小的设置?
    猜你喜欢
    • 1970-01-01
    • 2010-10-15
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多