- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有隐藏字段的 Web 用户控件。当发生 javascript 事件(单击)时,我尝试在隐藏字段中设置一个值,以便可以在回发时保留该值并在下次渲染时记住该值。该控件是一个可折叠面板扩展器,不会导致回发,使用 jquery,如果回发发生在页面的其他位置,它会记住它是展开还是折叠。
问题是 JavaScript 执行了,但实际上并没有更改隐藏字段中的值。如果我使用 dom 资源管理器,隐藏字段仍设置为默认值,然后当我调试时,在下一次回发中隐藏字段仍设置为默认值。
我也尝试过使用经过验证的 getElementById,但没有成功。
没有发生 JavaScript 错误。
ASCX code:
<input id="hiddenCurrentState" type="hidden" runat="server" />
Codebehind:
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
public partial class Controls_SubControls_CollapsiblePanelExtender : System.Web.UI.UserControl
{
public string HeaderControlId { get; set; }
public string BodyControlId { get; set; }
public string CollapseAllControlId { get; set; }
public string ShowAllControlId { get; set; }
public CollapsedState DefaultState { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
hiddenCurrentState.Value = DefaultState.ToString();
}
}
protected override void OnPreRender(EventArgs e)
{
BuildJQueryScript();
base.OnPreRender(e);
}
private void BuildJQueryScript()
{
StringBuilder script = new StringBuilder();
script.Append("$(document).ready(function(){\n");
//toggle based on current state
script.Append("if ($(\"#" + hiddenCurrentState.ClientID + "\").attr(\"value\")==\"Expanded\")\n");
script.Append("{\n");
script.Append("$(\"#" + BodyControlId + "\").show();\n");
script.Append("$(\"#" + hiddenCurrentState.ClientID + "\").val(\"Expanded\");\n");
script.Append("}\n");
script.Append("else\n");
script.Append("{\n");
script.Append("$(\"#" + BodyControlId + "\").hide();\n");
script.Append("$(\"#" + hiddenCurrentState.ClientID + "\").val(\"Collapsed\");\n");
script.Append("}\n");
//toggle on click
script.Append("$(\"#" + HeaderControlId + "\").click(function(){\n");
script.Append(" $(this).next(\"#" + BodyControlId + "\").slideToggle(500)\n");
script.Append(" return false;\n");
script.Append("});\n");
//collapse all
if (!String.IsNullOrEmpty(CollapseAllControlId))
{
script.Append("$(\"#" + CollapseAllControlId + "\").click(function(){\n");
script.Append(" $(\"#" + BodyControlId + "\").slideUp(500)\n");
script.Append(" return false;\n");
script.Append("});\n");
}
//show all
if (!String.IsNullOrEmpty(ShowAllControlId))
{
script.Append("$(\"#" + ShowAllControlId + "\").click(function(){\n");
script.Append(" $(this).hide()\n");
script.Append(" $(\"#" + BodyControlId + "\").slideDown()\n");
//script.Append(" $(\".message_list li:gt(4)\").slideDown()\n");
script.Append(" return false;\n");
script.Append("});\n");
}
script.Append("});\n");
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CollapsiblePanelScript", script.ToString(), true);
}
}
public enum CollapsedState
{
Expanded = 0,
Collapsed = 1
}
最佳答案
我不明白你在客户端哪里设置隐藏字段的值。我希望在折叠/显示函数中看到类似以下内容的行,以在面板折叠/展开时实际更改客户端上的值。
折叠:
script.Append( " $(\"#" + hiddenCurrentState.ClientID + "\").val(1);\n" );
显示:
script.Append( " $(\"#" + hiddenCurrentState.ClientID + "\").val(0);\n" );
关于asp.net - 通过 javascript 更改的隐藏字段在回发时不保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/689758/
我有一个里面 在 GridView 中:
两个问题: 在回发时,当用户单击“提交”时,如何将错误消息添加到验证摘要中? 是否也可以使用内置的 .net 验证控件突出显示特定文本框? 最佳答案 动态创建 CustomValidator 控件并将
我的 Controller 用一个列表填充我的模型,该列表包含出现在我 View 中的 DropDownList 中的 strings。当 View 回发到我的 Controller 时,该列表突然为
我创建了两个输入框,并设置了 JavaScript,以便在达到最大长度时自动聚焦下一个框。它工作正常。但是当触发任何回发事件时,这些值变得清晰。我将 runat="server"放在输入框上,然后输入
我正在开发 asp.net 4.0(Web 表单),每当页面回发以验证凭据时,我都会在登录页面上遇到错误,它会显示以下错误。 Sys.WebForms.PageRequestManagerServer
我目前正在开发一个在 Sharepoint 中运行的 ASP.Net 网站。在解决问题之前,让我先给您一些背景信息。 我开发了 UserControl,然后将其添加为共享点页面上的 Web 部件。其中
我是一名优秀的程序员,十分优秀!