简体   繁体   English

服务器标签格式不正确。 html runat =“ server”和data-target =“#<%Eval(”缩写“)%>”

[英]The server tag is not well formed. html runat=“server” and data-target=“#<% Eval(”Abbreviation“)%>”

I have to generate checkboxes, which i have to check when a button is clicked. 我必须生成复选框,单击按钮时必须检查它。 When the checkbox is clicked it needs to use the "data-target" to uncollapse some code. 单击复选框后,它需要使用“数据目标”来取消折叠某些代码。

I need both the collapse and getting if its checked. 我既需要崩溃,也需要对其进行检查。

Problems: the runat="server" and data-targer="#<%# Eval("Abbreviation")%>" gets my compiler saying "The server tag is not well formed". 问题:runat =“ server”和data-targer =“#<%#Eval(” Abbreviation“)%>”使我的编译器说“服务器标签格式不正确”。

When i try to get the "chk.checked" on serveside it says it doesn't know it since i can't have runat="server" if i have the data-target. 当我尝试在服务端获取“ chk.checked”时,它说它不知道,因为如果我有数据目标,我将无法运行runat =“ server”。

Here is the html code for the repeater. 这是转发器的html代码。

<asp:Repeater ID="ferryRepeater" runat="server">
            <ItemTemplate>
                <div id="div1" runat="server">
                    <input  id="chkFerry"  type="checkbox" data-toggle="collapse" runat="server" data-target="#<%# Eval("Abbreviation")%>"  />
                    <!--data-target="#<%# Eval("Abbreviation")%>" -->
                    <label id="label1" for="chk1"><%# Eval("SubcontractorName") %></label>
                    <div id="<%# Eval("Abbreviation") %>" class="collapse obligatorisk">
                        <dl>
                            <dt id="toFrom1"></dt>
                            <dd>
                                <p id="text1"><%# Eval("DialogueText") %></p>
                            </dd>
                        </dl>
                    </div>
                </div>
            </ItemTemplate>
        </asp:Repeater>

Here is the backend code for checking the checkboxes. 这是用于选中复选框的后端代码。

private List<string> CheckFerryCheckbox()
{
    List<string> ferryList = new List<string>();
    foreach (RepeaterItem item in ferryRepeater.Items)
    {
        CheckBox chk = (CheckBox)item.FindControl("chkFerry");
        if (chk.Checked)
        {
            Label ferry = (Label)item.FindControl("label1");
            ferryList.Add(ferry.Text);
        }
    }

    return ferryList;
}

Here is where i Binding with the repeater. 这是我与中继器绑定的地方。

private void BindRepeaterData()
{
    string sqlString = @"SELECT sc.SubcontractorName, dt.DialogueText, sc.Abbreviation FROM dbo.Subcontractor sc LEFT OUTER JOIN dbo.DialogueText dt ON sc.DialogueId = dt.DialogueId WHERE sc.Active = 1 AND sc.Type = 'Færge' ORDER BY sc.SubcontractorName";
    SqlCommand cmd = new SqlCommand(sqlString, conn);
    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(ds);
    ferryRepeater.DataSource = ds;
    ferryRepeater.DataBind();
}

I have tried to change Data-target to data-target='#<%# Eval("Abbreviation")%>' and have runat="server", but then it doesn't generate the Eval. 我试图将Data-target更改为data-target ='#<%#Eval(“ Abbreviation”)%>'并设置runat =“ server”,但随后它不会生成Eval。

Sorry if this is not that well explained. 很抱歉,如果没有那么好解释。 It is my first post here, so please be gentle. 这是我的第一篇文章,请保持温柔。

Do not use double quotes on the eval. 不要在eval上使用双引号。 As an example: 举个例子:

data-target="#<%# Eval("Abbreviation")%>"

Should be: 应该:

data-target='#<%# Eval("Abbreviation")%>'

As a whole: 总体而言:

<asp:Repeater ID="ferryRepeater" runat="server">
        <ItemTemplate>
            <div id='div1_<%# Eval("Abbreviation")%>' runat="server">
                <input  id='chkFerry_<%# Eval("Abbreviation")%>'  type="checkbox" data-toggle="collapse" runat="server" data-target='#<%# Eval("Abbreviation")%>'  />
                <!--data-target="#<%# Eval("Abbreviation")%>" -->
                <label id='label1_<%# Eval("Abbreviation")%>' for='chkFerry_<%# Eval("Abbreviation")%>'><%# Eval("SubcontractorName") %></label>
                <div id='<%# Eval("Abbreviation") %>' class="collapse obligatorisk">
                    <dl>
                        <dt id='toFrom1_<%# Eval("Abbreviation") %>'></dt>
                        <dd>
                            <p id='text1_<%# Eval("Abbreviation") %>'><%# Eval("DialogueText") %></p>
                        </dd>
                    </dl>
                </div>
            </div>
        </ItemTemplate>
    </asp:Repeater>

Try the following: Note the use of String.Format method for data-target: 请尝试以下操作:注意将String.Format方法用于数据目标:

<asp:Repeater ID="ferryRepeater" runat="server">
            <ItemTemplate>
                <div id="div1" runat="server">
                    <input  id="chkFerry"  type="checkbox" data-toggle="collapse" runat="server" data-target='<%# String.Format("#{0}", Eval("Abbreviation"))%>'  />

                    <label id="label1" for="chk1"><%# Eval("SubcontractorName") %></label>
                    <div id="<%# Eval("Abbreviation") %>" class="collapse obligatorisk">
                        <dl>
                            <dt id="toFrom1"></dt>
                            <dd>
                                <p id="text1"><%# Eval("DialogueText") %></p>
                            </dd>
                        </dl>
                    </div>
                </div>
            </ItemTemplate>
        </asp:Repeater>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM