GridView中的链接(a)有问题吗?

时间:2013-02-21 15:40:28

标签: c# asp.net

我的网格视图中有一个(a)并且它没有编译:

  <asp:GridView ID="gvProjects" runat="server" OnSorting="gvProjects_Sorting"
            AutoGenerateColumns="False" CssClass="table table-hover table-striped"
            GridLines="None">
            <Columns>
                <asp:TemplateField HeaderText="Title" SortExpression="ProjectTitle">
                    <ItemTemplate>
                           <a href="#myModal" id="remove_emp_btn" onclick="go('projectFrame','ProjectViewFrame.aspx?id=<%# Eval("ProjectID") %>')" 
                               runat="server" data-toggle="modal">'<%# Eval("ProjectTitle") %>'</a>
                    </ItemTemplate>
                </asp:TemplateField>

我是否被迫使用asp控件或代码有问题?

由于

它表示服务器标签格式不正确。

问题似乎是:

 onclick="go('projectFrame','ProjectViewFrame.aspx?id=<%# Eval("ProjectID") %>')" 

3 个答案:

答案 0 :(得分:2)

您应该在服务器代码onclick中包含<%# %>属性的所有内容,并且可以删除属性runat="server"。此外,双引号字符必须转义:

<asp:GridView ID="gvProjects" runat="server" OnSorting="gvProjects_Sorting"
AutoGenerateColumns="False" CssClass="table table-hover table-striped"
GridLines="None">
<Columns>
    <asp:TemplateField HeaderText="Title" SortExpression="ProjectTitle">
        <ItemTemplate>
           <a href="#myModal" id="A1" onclick='<%# "go(\"projectFrame\", \"ProjectViewFrame.aspx?id=" + Eval("ProjectID").ToString() + "\" )" %>'
                    data-toggle="modal">'<%# Eval("ProjectTitle") %>'</a>
        </ItemTemplate>
    </asp:TemplateField>

替代:

使用Eval方法的第二个参数格式化字符串使标记更容易阅读。

   <a href="#myModal" id="remove_emp_btn" onclick='<%# Eval("ProjectID", "go(\"projectFrame\", \"ProjectViewFrame.aspx?id={0}\")") %>'
                data-toggle="modal">'<%# Eval("ProjectTitle") %>'</a>

答案 1 :(得分:0)

我从来没有把eval放在文本中间。我经常采用这种方式渲染:

"<%= "go('projectFrame','ProjectViewFrame.aspx?id=" + (string)Eval("ProjectID") %>"

答案 2 :(得分:0)

使用&lt;%#%&gt;语法并删除runat = server:

 <a href="#myModal" id="remove_emp_btn"  OnSorting="gvProjects_Sorting"
                           onclick='<%# "go('projectFrame','ProjectViewFrame.aspx?id=" + Eval("ProjectID").ToString() + ")" %>'
                               data-toggle="modal">'<%# Eval("ProjectTitle") %>'</a>