asp.net转发器返回怪异的HTML

时间:2010-05-30 18:26:37

标签: asp.net html data-binding

我有一个转发器应该用数据绑定器的onclick函数创建div标签。这就像

onclick='<%# "functionname('" + Eval("somestring") +"');" %>'

但在js func之后的单引号(以及之前),它们变成了类似的东西?,= ..

我不明白发生了什么。 ..完整的代码在下面

<div id="dvPager">
    <asp:Repeater ID="pagerSorular" runat="server">
    <ItemTemplate>
     <div class='<%# "pageritem pagertext" + ((this.PageNumber == int.Parse(Container.DataItem.ToString())) ? " pagerselected" : "") %>'
          onclick='<%# "gotopage('" + this.PageName + "', " + Container.DataItem + ");" %>'>
      <%# Container.DataItem %>
     </div>
    </ItemTemplate>
    </asp:Repeater>
</div>

和代码隐藏是:

public int PageNumber 
{
    get
    {
       string strPgNum = Request.QueryString["pg"] as String;
       if (!String.IsNullOrEmpty(strPgNum))
       {
           int pgnum;
           if (int.TryParse(strPgNum, out pgnum))
           {
               if (pgnum <= 0)
               {
                   return pgnum;
               }
               else
               {
                   return 1;
               }
           }
           else
           {
               return 1;
           }
       }
       else
       {
           return 1;
       }
    }

}
public string PageName {
    get
    {
        string url = Request.Url.ToString();
        string[] parts = url.Split(new char[]{'/'});
        return parts[parts.Length - 1];
    }
}
public void Doldur(List<SoruGridView> sorulistesi)
{
    gridSorular.DataSource = sorulistesi;
    gridSorular.DataBind();
    ///
    PagerYap(sorulistesi);
}

protected void PagerYap(List<SoruGridView> sorulistesi)
{
    List<int> numpgs = new List<int>(); int count = 1;
    foreach (SoruGridView sgv in sorulistesi)
    {
        numpgs.Add(count);
        count++;
    }
    pagerSorular.DataSource = numpgs.ToArray();
    pagerSorular.DataBind();

}

2 个答案:

答案 0 :(得分:1)

你必须在“functionname(”之后)对你的单引号进行html编码,如同这个问题:

Triple Quotes? How do I delimit a databound Javascript string parameter in ASP.NET?

看起来你也可以简化你的代码:

onclick='functionname(&#39;<%# Eval("somestring")%>&#39);'

看起来更令人讨厌,抱歉无法帮助。

答案 1 :(得分:0)

我实际上在Stack Overflow上找到了答案:

  

Triple Quotes? How do I delimit a databound Javascript string parameter in ASP.NET?