2

隠しフィールドがある ASP ページがあります。このフィールドには、DB から削除するために選択された値が格納されます。

<asp:HiddenField ID="TargetField" runat="server" />

同じページでポップアップが表示され、削除ボタンが表示されます。このボタンをクリックすると、このフィールドが「設定」され、サーバー コードがトリガーされます。

<asp:Button ID="ButtonDelete" runat="server" Text="Delete" CommandName="Delete" CommandArgument='<%# Eval("DataBoundGuidField") %>' />

サーバー コードは、適切な DataBound ハンドラーに "OnClick" JavaScript をプログラムで既に設定しています (これは機能します)。

var btnSelectValue = CType(e.Row.FindControl("SelectValue"), Button)
btnSelectValue .Attributes.Add("onclick", String.Format("document.getElementById('{0}').value=document.getElementById('{1}').value; return true;", SourceField.ClientID, TargetField.ClientID))

次に、サーバー コードにはクリックのハンドラーがあります。

protected void DeleteButtonClickHandler(object sender, EventArgs e) 
{
    // this line is the problem - it is always string.Empty in IE9 but works in Chrome !?
    var selectedValue = TargetField.Value
}

値を要素にコピーしてサーバーで読み取るこのメカニズムが Chrome では機能するのに IE9 では機能しない理由を理解するためだけに、今すぐ書き直す方法を理解する必要はありません...そして、修理。事前にt​​hx。

アップデート

リクエストに応じて、レンダリングされた HTML の上位数行を以下に示します (META はありません)。

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><link href="..</head>

ASPX マークアップの上位数行を次に示します。

<%@ Page Language="C#" MasterPageFile="~/Masters/Menu.master" AutoEventWireup="false" CodeFile="Default.aspx.cs" Inherits="EditScreen_Default" title="Edit Screen" %>    
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolderMain" Runat="Server">    
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

これは、それぞれ HTML でレンダリングされた SourceField.CliendId / TargetField.ClientId の値です。

<input type="hidden" name="ctl00$ContentPlaceHolderMain$GridViewRows$ctl03$SourceField" id="ctl00_ContentPlaceHolderMain_GridViewRows_ctl03_SourceField" value="8aaa7a7a-7082-4a1b-8dab-c25b0d98c263" />                  
<input type="hidden" name="ctl00$ContentPlaceHolderMain$TargetField" id="ctl00_ContentPlaceHolderMain_TargetField" />
4

1 に答える 1