نوشته شده توسط
mehran63
ولی زیاد متوجه نشدم برای رفع این مشکل چه باید کرد. در یک جا فرمودید گرفتن این مقدار از سورس صفحه کار صحیحی نیست.
منظورم روشی بود که دوستمون فرمودند ، یعنی اینکه بیایم برنامه رو اجرا کنیم بعد بریم تو سورس صفحه ببینیم چه ID گرفته صحیح نیست .
نوشته شده توسط
mehran63
1-2 وقتی این سورس را در Aspx قرار میدهم ServerControlID.ClientID را خطا میگیرد کد را به شکل زیر نوشتم
ServerControlID ، آیدی یک کنترل سمت سرور هست ( مثلا lblMyLabel ) و خاصیت ClientID ، آیدی ای هست که در نهایت رندر میشه و در سورس صفحه مشاهده میکنید.
پس ServerControlID رو باید به نام کنترل سمت سرور مورد نظرتون تغییر نام بدید. ( مثلا Button1 که در کدهاتون نوشتید. )
نوشته شده توسط
mehran63
2- در بخش دوم که گفتید برای قرار دادن کدها در یک فایل خارجی است، اگه امکان داره شکل کامل سورس را بگذارید (هم بخش مربوط به JS و هم بخش مربوط به aspx) من تازه کار هستم
Default.aspx :
کد HTML:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ASP.NET_Webform.Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Using ASP.NET Control's ID in Client Side</title>
<script type="text/javascript" src="Scripts/myjs.js"></script>
</head>
<body>
<form id="form1" runat="server">
<asp:Button runat="server" ID="btnMyButton" />
</form>
<script type="text/javascript">
buttonClick("<%= btnMyButton.ClientID %>");
</script>
</body>
</html>
myjs.js :
function buttonClick(id){
$("#" + id).click(function () {
$("div").hide();
});
}
نوشته شده توسط
mehran63
3- در اینجا من از ID در بخش Selector استفاده کردم که به قول شما در زمان اجرا به مشکل بر میخوره. آیا به جای ID چیز دیگری وجود دارد تا برای تگ های مربوط به ASP.NET از آن در بخش Selector استفاده کرد؟
بله! حالت های مختلفی وجود داره ، مثلا اصلا میشه رویداد هارو در خود تگ ( یا کنترل سمت سرور ) تعریف کرد
کد HTML:
<asp:Button runat="server" ID="btnMyButton" OnClientClick="someFunc(this)" />
یا میشه با Css Selector با عناصر صفحه ارتباط داشت ( مثل استایل دهی که توسط Css انجام میدیم )
$(".someClass #mytag sometag").click(function() { });
همونطوری که مشاهده می کنید ، روش های مختلفی وجود داره و انتخاب بهترین روش ، باید متناسب با موقعیت باشه.
نوشته شده توسط
mehran63
4- در پایین سورس رو در حال اجرا گذاشتم همانطور که میبینید ID مربوط به Button تغییر نکرده است و میتوان گفت ID هیچ کنترلی تغییر نکرده
صحیح! قبلا عرض کردم که این هم ممکن هست ، اما در ایجا صحیح نیست.
اگر زمانی ID کنترل سمت سرور رو تغییر بدید ، ID هایی که با مراجعه به سورس صفحه و بصورت ثابت تعریف کردید ، غیر معتبر خواهند شد و شما بسادگی متوجه این ناهمخوانی نخواهید شد.
در صورتی که اگه از روشی که ارائه شد استفاده کنید ، هم خود Visual Studio در نوشتن IDها به شما کمک خواهد کرد و هم زمان توسعه و هم زمان اجرای برنامه ، در صورت اشتباه بودن مقدار ID ارور خواهد داد.