PDA

View Full Version : استفاده از کدهای DOM در هنگام استفاده از MasterPage



mohsen_zelzela00
سه شنبه 10 فروردین 1389, 19:16 عصر
با سلام خدمت دوستان عزيز
من در استفاده از دستورات Dom در هنگام استفاده از masterPage به مشکل برخوردم
کدهای MasterPage من به صورت زیر است


<head runat="server">
<title>Untitled Page</title>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div id="div1">
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">

</asp:ContentPlaceHolder>
</div>

<div id="div2">

<asp:ContentPlaceHolder id="ContentPlaceHolder2" runat="server">

</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>




و کدهای صفحه خودم به صورت زیر است


<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<script type="text/javascript" language="javascript">
function bb() {

var c = document.getElementById("TextBox1");
c.value = "mohsen";




}


</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>


</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="bb()" />
</asp:Content>





ممنون میشم دوستان عزیز راهنمایی کنند

mehdi.mousavi
سه شنبه 10 فروردین 1389, 21:13 عصر
با سلام خدمت دوستان عزيز من در استفاده از دستورات Dom در هنگام استفاده از masterPage به مشکل برخوردم کدهای MasterPage من به صورت زیر است ممنون میشم دوستان عزیز راهنمایی کنند

سلام.
من فرصت ندارم کدتون رو تست کنم، اما حدس میزنم ایراد از getElementById باشه. از اونجاییکه Master Page ها INamingContainer رو پیاده سازی میکنن، ASP.NET runtime خودش اسم کنترلهای Client-Side رو تغییر میده و بهش پیشوند و پسوند اضافه میکنه تا از Unique بودن اسامی تولید شده سمت Client اطمینان حاصل کنه. در نتیجه، احتمالا سمت Client، شناسه TextBox1 وجود نداره.

برای رفع مشکل، جای

var c = document.getElementById("TextBox1");

بنویسید:

var c = document.getElementById('<%=TextBox1.ClientID%>);

موفق باشید.

reza.ziyaee
سه شنبه 10 فروردین 1389, 22:49 عصر
سلام دوست عزیز
پاسخ جنابmehdi.mousavi (http://barnamenevis.org/forum/member.php?u=41233) کاملا صحیح است فقط یک تک کوتیشن آخر دستور رو فراموش کردند . گفتم شاید به مشکل بربخورید .

var c = document.getElementById('<%=TextBox1.ClientID%>');