Code execution error in html style attribute

I get an error when trying to execute code in style attribute as indicated

<asp:LinkButton ID="lnkActivate" style='<%#Convert.ToBoolean(Eval("Activate")) ? "text-decoration:none;display:none;" : "text-decoration:none;display:block;"%>'  runat ="server" CommandArgument='<%# Eval("ID") %>'  OnClientClick ='return confirm("You want to send email to user to activate his account?");' CommandName ="activate" Text="Send Email"   ></asp:LinkButton>

Discarded Error: Error: Unexpected '<' in tag 'asp:LinkButton'.

I apologize if this question does not meet community standards. The code is also in C #

Edit: Here is another markup

<asp:Repeater ID="rpHostUsersList" runat="server"  >
            <ItemTemplate>

                <tr class="odd gradeC" >
                        <td><%#DataBinder.Eval(Container.DataItem, "AccountID")%></td>
                        <td><%#DataBinder.Eval(Container.DataItem, "EmailAddress")%></td>
                        <td><%#DataBinder.Eval(Container.DataItem, "FirstName")%>,  <%#DataBinder.Eval(Container.DataItem, "LastName")%></td>
                        <td><%#DataBinder.Eval(Container.DataItem, "Phone")%></td>
                        <td><%#DataBinder.Eval(Container.DataItem, "Address1")%></td>
                        <td><%#DataBinder.Eval(Container.DataItem, "City")%></td>
                        <td><%#DataBinder.Eval(Container.DataItem, "State")%></td>
                        <td><%#DataBinder.Eval(Container.DataItem, "Zip1")%></td>
                        <td>
                        <%#Convert.ToBoolean(Eval("Active")) ? "Yes" : "No"%>
                        </td>
                        <td> <%#Convert.ToBoolean(Eval("Activate")) ? "Yes" : "No"%>                            
                        <asp:LinkButton ID="lnkActivate" style='<%#Convert.ToBoolean(Eval("Activate")) ? "text-decoration:none;display:none;" : "text-decoration:none;display:block;"%>'  runat ="server" CommandArgument='<%# Eval("ID") %>'  OnClientClick ='return confirm("You want to send email to user to activate his account?");' CommandName ="activate" Text="Send Email"   ></asp:LinkButton>      
                        </td>

                    </tr>
                </ItemTemplate>
            </asp:Repeater>
+4
source share
1 answer

EDIT

Well, your problem is with the read-only LinkButton Style Property

public CssStyleCollection Style { get; }

But you can use the CssClass property

public virtual string CssClass { get; set; }

So you can do something like this:

Define a style tag out of your control:

<style>
 .myclassBlock{
  text-decoration:none;
  display: block

  .myclassNone{
  text-decoration:none;
  display:none; 
}

</style>

But if you apply your conditional logic in your Linkbutton markup:

<asp:LinkButton ID="lnkActivate" CssClass='<%#Convert.ToBoolean(Eval("Activate")) ? "myclassBlock" : "myclassNone"%>' runat ="server" CommandArgument='<%# Eval("ID") %>'  OnClientClick ='return confirm("You want to send email to user to activate his account?");' CommandName ="activate" Text="Send Email"   ></asp:LinkButton>

In the output, you will see the following:

<a onclick="return confirm(&quot;You want to send email to user to activate his account?&quot;);" id="lnkActivate" class="<%#Convert.ToBoolean(Eval("Activate")) ? "myclassBlock" : "myclassNone"%>" href="javascript:__doPostBack('lnkActivate','')">Send Email</a>

'<%#Convert.ToBoolean(Eval("Activate")) ? "myclassBlock" : "myclassNone"%>' .

, - :

LinkButton:

<form>
<asp:Repeater ID="rpHostUsersList" runat="server" OnItemDataBound="rpHostUsersList_OnItemDataBound">
    <HeaderTemplate>
        <table border="1">
            <tr>
                <td><b>Activate</b></td>
            </tr>
    </HeaderTemplate>
    <ItemTemplate>

        <tr>
            <td><%#Convert.ToBoolean(Eval("Activate")) ? "Yes" : "No"%> <asp:LinkButton ID="lnkActivate" runat="server" Text="Send Email"></asp:LinkButton></td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>
    </form>

Datatable " " , :

protected void Page_Load(object sender, EventArgs e)
        {
            Activate = true;
            var ds = new DataSet();
            var dt = new DataTable();
            dt.Columns.Add("Activate");

            dt.Rows.Add(new object[] { true });
            dt.Rows.Add(new object[] { false });
            dt.Rows.Add(new object[] { true });

            ds.Tables.Add(dt);

            rpHostUsersList.DataSource = ds;
            rpHostUsersList.DataBind();
        }

, , :

protected void rpHostUsersList_OnItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                var currentData = ((System.Data.DataRowView)e.Item.DataItem)["Activate"];
                var b = Convert.ToBoolean(currentData);
                var btn = (LinkButton)e.Item.FindControl("lnkActivate");
                btn.CssClass = b ? "myclassBlock" : "myclassNone";
            }
        }

OUTPUT

enter image description here

+3

Source: https://habr.com/ru/post/1568786/


All Articles