SmtpClient in c# resource is inaccessible due to its protection level

182 Views Asked by At

The following C# source code shows how to send an email from my email address using SmtpClient.

protected void btnFinal_Click(object sender, EventArgs e)
{
    SmtpClient smtpClient = new SmtpClient("xxxx");
    MailMessage mailMessagePlainText = new MailMessage();
    mailMessagePlainText.IsBodyHtml = true;
    mailMessagePlainText.BodyEncoding = Encoding.UTF8;

    mailMessagePlainText.Subject = DateTime.Now.ToString("dd-MM-yyyy");

    mailMessagePlainText.From = new MailAddress("[email protected], ""); 

    if (count > 1)
    {
        values = value.Split(new[] { ';' }, 2);
        first = values[0];
        rest = values[1];
        mailMessagePlainText.To.Add(new MailAddress(first.ToString().Trim().ToUpper(), ""));            
    }
    else
    {
        mailMessagePlainText.To.Add(new MailAddress(second.ToString().Trim().ToUpper(), ""));
    }

    try
    {
        smtpClient.Send(mailMessagePlainText);
        Page.ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('ok';", true);
    }
    catch (Exception ex)
    {
        throw (ex);
    }
}

Now i need using the string first or second (recipient of my message) in Hyperlink in aspx markup

<asp:TemplateField HeaderText="Number row"
    ItemStyle-HorizontalAlign="Center"
    ItemStyle-CssClass="ddl_Class_new"
    ItemStyle-Font-Size="Smaller"
    ItemStyle-Font-Names="Arial">
    <ItemTemplate>
        <asp:HyperLink
            ID="HyperLink1"
            runat="server"
            CssClass="ddl_Class_new"
            NavigateUrl='<%# String.Format("Default.aspx?ID={0}&TOUSER={1}", 
                             Eval("Number row").ToString(), ... ) %>'>

                            <%# Eval("Number_row") %>
        </asp:HyperLink>
    </ItemTemplate>
</asp:TemplateField>

I have tried this without success:

NavigateUrl='<%# String.Format("Default.aspx?ID={0}&TOUSER={1}", 
                 Eval("Number row").ToString(), 
                 first.ToString().Trim().ToUpper()) %>'>

or

NavigateUrl='<%# String.Format("Default.aspx?ID={0}&TOUSER={1}", 
                 Eval("Number row").ToString(), 
                 second.ToString().Trim().ToUpper()) %>'>

The error is:

CS0122 first ( or second ) is inaccessible due to its protection level

Any suggestion please?

Thanks in advance for any help

Update #1

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        HyperLink HyperLink1 = (HyperLink)e.Row.FindControl("HyperLink1");
        HyperLink1.NavigateUrl = "Default.aspx?ID=" + DataBinder.Eval(e.Row.DataItem, "Number row").ToString() + "&TOUSER=" + first.ToString();
        HyperLink1.Text = DataBinder.Eval(e.Row.DataItem, "Number row").ToString();
    }
}

Error

Object reference not set to an instance of an object
1

There are 1 best solutions below

2
On BEST ANSWER

Why don't you set it all from the code behind on the data bound event of the Grid?

 HyperLink1.NavigateURL = "default.aspx?id="+first;