希望从控制器的客户端使可见性成为真,从服务器端看不到

问题描述 投票:3回答:3

我在页面中有一个文本框。从服务器端将可见性设置为false。现在我想通过使用java-script从客户端看到它。 (在这种情况下,无法执行任何回发或部分回发。)

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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 id="Head1" runat="server">
        <title>ControlVisibilityClientSide</title>
            <script type="text/javascript">
                function toggleVisibility(controlId)
                {
                    var control = document.getElementById(controlId);
                    if(control.style.visibility == "visible" || control.style.visibility == "")
                        control.style.visibility = "hidden";
                    else
                        control.style.visibility = "visible";
                }
            </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                <input type="button" ID="btnShowHide" value="Show/Hide" onclick="toggleVisibility('TextBox1');" />
            </div>
        </form>
    </body>
</html>

这工作正常。

但是当我使用时

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        TextBox1.Visible = false;
    }
}

上面的代码根本不起作用。

任何人都可以帮我解决这个问题或任何建议将不胜感激。

c# javascript asp.net html css
3个回答
7
投票

如果您设置控件visible=false它将不会在客户端呈现,但有一个棘手的解决方案,将完成相同的事情。

在你的页面加载中,你设置Visible=false,你可以将style设置为display:none

protected void Page_Load(object sender, EventArgs e)
{
   TextBox1.Attributes.Add("style", "display:none");
}

它将在客户端呈现控件,但是用户无法看到然后你可以在Javascript函数中看到控件来设置style Diplay:block,LIKE ......

document.getElementById('<%=TextBox2.ClientID %>').style.display = 'block';

2
投票

一旦控制在服务器端被标记为不可见,就不会为它发出标记(html)。所以它不能在JS上显示,因为它(对应的html)在客户端不存在。

您需要发出启动脚本以在客户端隐藏它,而不是在服务器端隐藏。


0
投票

在服务器端设置style["visibility"] = "hidden"。 I.E.在c#btnSave.style["visibility"] = "hidden";中它将获得呈现的按钮,因此在客户端可以访问此元素。在客户端,将可见性样式更改为可见。

$('#btnSave).css("visibility", "visible");
© www.soinside.com 2019 - 2024. All rights reserved.