当使用母版页时JavaScript客户端获取服务器控件的Id

7 篇文章 0 订阅

当使用MasterPage、UserControl等容器时,为了避免控件的重复命名,asp.net会自动将容器中的控件生成一个ClientID(Control Tree中的可生成,否则不会生成)。

JavaScript客户端脚本获取服务器控件Id:  <%=TextBox1.ClientID%>  即:   <%= 服务器控件id.ClientID%>

 

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    <script type="text/javascript">
        function show() {
            var str = document.getElementById_x("<%=TextBox1.ClientID%>").value;
            alert(str);
        }
    </script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
      <table>
         <tr>
            <td>
            搜索页面<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            <asp:TextBox ID="TextBox1" runat="server" οnclick="show()"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" οnclick="Button1_Click" Text="Button"/>
           </td>
        </tr>
      </table>
</asp:Content>

C#中,如果你想要在一个嵌入(iframe)内的内容面(通常是ASP.NET Web Forms应用或MVC视图)获取宿主母版或主面的控件值,你需要考虑以下几个步骤,因为这通常涉及客户端服务器端交互: 1. **AJAX(Asynchronous JavaScript and XML)请求**: - 在IFrame中的JavaScript可以通过XMLHttpRequest或jQuery的$.ajax方法发起异步请求到母版的控制台URL。 - 示例代码(假设你的母版有一个名为`MyControl`的`asp:Label`控件): ```javascript function getValueFromMasterPage() { $.ajax({ type: "GET", url: "@Url.Content("~/YourMasterPage.aspx")", // 替换为你的母版地址 data: { id: "yourControlUniqueId" }, // 如果需要传参 success: function(result) { var masterValue = result Masterserver.MyControl.Text; // 切记在母版上正确的命名空间和控件名 console.log(masterValue); }, error: function(xhr, status, error) { console.error("Failed to fetch value from master page: ", error); } }); } ``` 2. **使用WebMethod**: - 在母版上,创建一个`WebMethod`,它接收一个参数,并返回你需要的值。 - 从IFrame中调用这个方法,同样使用Ajax。 ```csharp [WebMethod] public static string GetMasterControlValue(string controlId) { Label myControl = (Label)Master.FindControl(controlId); // 控制器查找 return myControl.Text; } ``` 3. **服务器端验证**: - 验证用户是否有权访问这些信息,尤其是如果它们包含敏感数据。 需要注意的是,由于安全原因(同源策略),这种跨域通信在现代浏览器中受到限制,除非母版和内容面在同一域下。如果你需要在不同域间通信,你可能需要借助JSONP、CORS或其他技术来绕过同源策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值