PDA

View Full Version : سوال: مشکل با ID کنترلها



mehran63
یک شنبه 10 دی 1391, 12:13 عصر
سلام
وقتی ClientIDMode="Static" قرار میدهم اتفاقی که می افتد با موقعی که از این خاصیت استفاده نمیکنم فرقی نداره و مقدار ID یکی است


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


<%@ Register src="WebUserControl.ascx" tagname="WebUserControl" tagprefix="uc1" %>


<!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 runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>

<uc1:WebUserControl ID="WebUserControl1" runat="server" ClientIDMode="Static" />
</div>

<div>
<asp:CheckBox ID="CheckBox1" runat="server" ClientIDMode="Static" />
</div>
</form>
</body>
</html>


کد بعد اجرا(در حین اجرا)

<!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><title>

</title></head>
<body>
<form method="post" action="Default.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTA2NTc3NzU0OWQYAQUeX19Db250cm9sc1JlcXVpcmV Qb3N0QmFja0tleV9fFgEFCUNoZWNrQm94MQCWaafdSNv3AEnqS vo2vc4tr88px/UhUgUIxJxm4OCk" />
</div>

<div class="aspNetHidden">

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBALEh/bBCwLAuvGfDwKMgeP0CQKC5Ne7CWUe5e5kBaViHuWN1CWuKPFB PgYBoEz8rWeicb8KereJ" />
</div>
<div>

<input name="WebUserControl1$TextBox1" type="text" id="TextBox1" />
<br />
<input type="submit" name="WebUserControl1$Button1" value="Button" id="Button1" />


</div>

<div>
<input id="CheckBox1" type="checkbox" name="CheckBox1" />
</div>
</form>
</body>
</html>


این بار بدون استفاده از ClientID کد را اجرا کردم که نتیجه را در زیر میبینید


<!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><title>

</title></head>
<body>
<form method="post" action="Default.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTA2NTc3NzU0OWQYAQUeX19Db250cm9sc1JlcXVpcmV Qb3N0QmFja0tleV9fFgEFCUNoZWNrQm94MQCWaafdSNv3AEnqS vo2vc4tr88px/UhUgUIxJxm4OCk" />
</div>

<div class="aspNetHidden">

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBALEh/bBCwLAuvGfDwKMgeP0CQKC5Ne7CWUe5e5kBaViHuWN1CWuKPFB PgYBoEz8rWeicb8KereJ" />
</div>
<div>

<input name="WebUserControl1$TextBox1" type="text" id="WebUserControl1_TextBox1" />
<br />
<input type="submit" name="WebUserControl1$Button1" value="Button" id="WebUserControl1_Button1" />


</div>

<div>
<input id="CheckBox1" type="checkbox" name="CheckBox1" />
</div>
</form>
</body>
</html>


برای این که وضعیت ID رو به طریق دیگه ای در حالت اجرا ببینیم خاصیت Trace را True گذاشتم

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

همینطور خاصیت ClientIDMode="Static" را تنظیکم کردم نتیجه خروجی را در پایین میبینید
خروجی با خاصیت ClientIDMode="Static" (http://img4up.com/up2/65232390733917893813.jpg)

حالا وقتی خاصیت ClientIDMode رو بردارم به شکل زیر است
خروجی بدون خاصیت ClientIDMode (http://img4up.com/up2/18445119721418119968.jpg)

میبینید که مقدار ID کنترلها فرقی نمیکنند، چرا؟ راه حل چیست؟

mehran63
یک شنبه 10 دی 1391, 19:31 عصر
کسی راه حل نداره

ahmad156
یک شنبه 10 دی 1391, 19:49 عصر
دوست عزیز ClientIDMode برای زمانی تفاوت ایجاد میکنه که شما از MasterPage استفاده کنین

mehran63
دوشنبه 11 دی 1391, 12:15 عصر
پس راه حل چیه ؟

ahmad156
دوشنبه 11 دی 1391, 13:27 عصر
دوست عزیز راه حل برای چی؟؟

mehran63
سه شنبه 12 دی 1391, 12:24 عصر
برای اینکه ID در زمان اجرا تغییر نکنه و ID که خودمان برای کنترل در نظر گرفتیم استفاده کند. دقیقا همان کاری که ClientIDMode="Static" انجام میدهد

mehran63
چهارشنبه 13 دی 1391, 11:49 صبح
کسی راه حل نداره

mehran63
دوشنبه 18 دی 1391, 10:33 صبح
چرا کسی جواب نمیده