Member 13427032 Ответов: 1

Наличие ошибки (потенциально опасный запрос.значение формы было обнаружено от клиента) при нажатии кнопки внутри gridview


когда я нажимаю кнопку которая была внутри gridview она отображает электронную почту внутри текстового поля но когда я попытался снова выбрать другую кнопку для отображения электронной почты в текстовом поле я столкнулся с такой ошибкой (
A potentially dangerous Request.Form value was detected from the client (txtEmailBody="...lkfkd.com)<mailto:abcdkkdlslfa...").
) кто-нибудь может мне помочь. и это мой код.

<pre> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px" CellPadding="4" OnRowCommand="GridView1_RowCommand" Height="423px">
            <Columns>
                <asp:TemplateField HeaderText="Subject">
                    <ItemTemplate>
                       <asp:LinkButton OnClientClick="document.getElementById('id01').style.display='block'; return false"   runat="server" CommandArgument='<%# Eval("Subject") %>' Text='<%# Eval("Subject") %>'></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="Sender" HeaderText="Receiver" />
                <asp:BoundField DataField="DateCreated" HeaderText="Date and Time Sent" />
                <asp:BoundField DataField="DateReceive" HeaderText="Date and Time Received" />
                <asp:TemplateField HeaderText="Email Body">
                    <ItemTemplate>
                       <asp:Button ID="txtItemBody"  runat="server" Text='<%# Eval("EmailHeader") %>' Width="100px" Enabled="false"/>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Get Email ">
                    <ItemTemplate>
                       <asp:Button runat="server"  CommandName="Select" CommandArgument="<%# Container.DataItemIndex %>" Text="View Email" />
                    </ItemTemplate>
                </asp:TemplateField>
                
            </Columns>
            
        </asp:GridView>
              </td>  
            <td>
               <asp:TextBox runat="server" ID="txtEmailBody" Width="650px" Height="700px" ReadOnly="true" TextMode="MultiLine" CssClass="textbox" Font-Size="Medium"></asp:TextBox>
                
            </td>


Что я уже пробовал:

и это мой код позади
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
                if (e.CommandName == "Select")
                {

                    int rowIndex = Convert.ToInt32(e.CommandArgument);

                    //Reference the GridView Row.
                    GridViewRow row = GridView1.Rows[rowIndex];
                    //fetch the value of the body of the email
                    string EmailHeader = (row.FindControl("txtItemBody") as System.Web.UI.WebControls.Button).Text;
                    string Sender = row.Cells[2].Text;
                    txtEmailBody.Text = EmailHeader;
                
            }



public void LoadResult()
        {
            
            EmailMethods email = new EmailMethods();

            email.EmailServer = "https://sampleExchangeServer.asmx";
            email.AccountName = ConfigurationManager.AppSettings["Account"];
            email.Password = ConfigurationManager.AppSettings["Secret"];
            email.Domain = ConfigurationManager.AppSettings["Domain"];
            email.GetEmails();
            DataTable dt = new DataTable();

            dt.Columns.Add("Subject", typeof(string));
            dt.Columns.Add("Sender", typeof(string));
            dt.Columns.Add("DateCreated", typeof(string));
            dt.Columns.Add("DateReceive", typeof(string));
            dt.Columns.Add("EmailHeader", typeof(string));

            foreach (Item item in email.EmailList)
            {
                dt.Rows.Add(item.Subject, item.DisplayTo, item.DateTimeCreated, item.DateTimeReceived, item.Body);

                GridView1.DataSource = dt;
                GridView1.DataBind();
                
            }

        }


protected void Page_Load(object sender, EventArgs e)
       {

           if (!IsPostBack)
           {
               LoadResult();
           }
       }

и я сделал некоторые исследования, которые мне нужно включить в этот код
<pre><system.web>
    <httpRuntime requestPathInvalidCharacters="<,>,%,&,:,\,?" />
</system.web>
а также я сделал некоторые из обратной связи, и до сих пор она не работает, но на IE я нажимаю на текстовое поле, и я нажимаю на заднее пространство, чтобы очистить электронную почту на текстовом поле, и я могу нажать другую кнопку внутри gridview без ошибки.

Member 13427032

а также он показывает на странице, что мне нужно добавить "Debug=true" что-то вроде этого <%@ Page Language="C#" Debug="true" %> или <configuration>
&ЛТ;система.веб&ГТ;
<compilation debug="true"/>


но все равно это не работает

1 Ответов

Рейтинг:
8

Dave Kreskowiak

Вы получаете это, потому что вы получаете ввод, который выглядит так, как будто это может быть HTML или URL-адрес в текстовых полях. Например, если пользователь вводит символы < и >, они могут быть интерпретированы как возможный HTML, и это не разрешено, если вы явно не разрешите это.


Member 13427032

Да, сэр, я проверяю, что в текстовом поле был < gt;. я проведу исследование о том, как разрешить < gt; В текстовом поле, и спасибо за информацию.

Member 13427032

Привет, сэр, вы знаете, как разрешить < gt; В текстовом поле?
заранее спасибо