gpt4 book ai didi

c# - Javascript 更新为 asp :HiddenField isnot detected server side in IE, 但适用于 Chrome

转载 作者:太空宇宙 更新时间:2023-11-03 16:09:51 25 4
gpt4 key购买 nike

我们有一个带有隐藏字段的 ASP 页面。该字段存储从数据库中删除的选定值:

<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 中工作......以及是否有一个修复。提前致谢。

更新

根据要求,这里是呈现的 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.ClientId/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" />

最佳答案

您可以使用两个按钮的方法。

使用您现在拥有的删除按钮调用 JavaScript。

<asp:Button ID="ButtonDelete" runat="server" Text="Delete" OnClientClick='<%# Eval("DataBoundGuidField","javascript:RunJavaScript({0});") %>' />

辅助按钮实际上会将页面发回。

<asp:Button ID="HdnDeleteButton" runat="server" Text="Delete" OnClick="DeleteButtonClickHandler" Style="display: none;" />

使用 Javascript 设置隐藏字段并单击隐藏按钮进行服务器端处理

function RunJavaScript(id){   
$('#<%=TargetField.ClientID %>').value = id;

//Call the hidden delete button for server side
$('#<%=HdnDeleteButton.ClientID %>').click();
}

关于c# - Javascript 更新为 asp :HiddenField isnot detected server side in IE, 但适用于 Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17926013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com