توضیحات و دانلود

کار نکردن جاوا اسکریپت بعد از چند بار استفاده کردن در یک صفحه در کنترل WebUser با ASP.NET
0 0
کار نکردن جاوا اسکریپت بعد از چند بار استفاده کردن در یک صفحه در کنترل WebUser با ASP.NET

با سلام در این مقاله کار نکردن جاوا اسکریپت بعد از چند بار استفاده کردن در یک صفحه در کنترل WebUser با ASP.NET را توضیح خواهیم داد .
موضوع
یک WebUserControl ساده با برخی از جاوا اسکریپت زیر را در نظر بگیرید.

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UC_TestCS.ascx.cs" Inherits="UC_TestCS" %>
<script type="text/javascript">
function DisplayMessage_<%=uniqueKey %>() {
    var message = document.getElementById("<%=TextBox1.ClientID %>").value;
    alert(message);
    return false;
}
</script>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Show Message" />

WebUserControl بالا به سادگی یک روش جاوا اسکریپت را اجرا می کند که متن را از TextBox در هنگام نمایش هشدار کلیک می کند.
در حال حاضر می خواهیم از همان کنترل WebUser در یک صفحه چندین بار استفاده کنیم، از این رو آن را ثبت نام میکنیم و در صفحه دو بار با شناسه های مختلف که عادی است قرار داده و نباید تاثیر گذارند چون WebUserControls برای reusability منظور می شود .

<%@ Register Src="~/UC_TestCS.ascx" TagName="TestCS" TagPrefix="uc" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <uc:TestCS ID="TestCS1" runat="server" />
        <br />
        <uc:TestCS ID="ucTest1" runat="server" />
        <br />
        <uc:TestVB ID="TestVB1" runat="server" />
        <br />
        <uc:TestVB ID="ucTest2" runat="server" />
    </div>
    </form>
</body>
</html>

 مسئله این است که وقتی از همان کنترل WebUser چند بار در همان صفحه استفاده می کنیم، در واقع تکرار می کنیم.وقتی ID های کنترل توسط .Net اداره می شوند جاوا اسکریپت به سادگی تکرار می شود همانطور که در تصویر زیر نشان داده شده است.

 

در تصویر بالا می توانید به وضوح ببینید که توابع جاوا اسکریپت به سادگی تکرار می شوند. از این رو هنگامی که سعی می کنیم آن را اجرا کنیم و دکمه را فشار دهید، تابع دوم همیشه اجرا می شود بدون در نظر گرفتن این که کدام دکمه کلیک می شود. بسیاری از آنها می گویند جاوا اسکریپت را در فایل های JS قرار می دهند، اما ما نمی توانیم از روش ClientID استفاده کنیم.
راه حل
راه حل این است که ما باید یک کلید یا عدد منحصر به فرد به نام روش اضافه کنیم تا هر کنترل کننده کاربر، روشهای جاوا اسکریپت و متغیرها را با یک نام منحصر به فرد ارائه کند.
C #

protected string uniqueKey;
protected void Page_Load(object sender, EventArgs e)
{
    this.uniqueKey = Guid.NewGuid().ToString("N");
    this.Button1.Attributes["onclick"] = "return DisplayMessage_" + uniqueKey + "();";
}

VB.Net

Protected uniqueKey As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    Me.uniqueKey = Guid.NewGuid.ToString("N")
    Me.Button1.Attributes("onclick") = ("return DisplayMessage_" _
                + (uniqueKey + "();"))
End Sub

 کد بالا یک کلید منحصر به فرد ایجاد می کند و آن را به متغیر محافظت شده اختصاص می دهد. حالا می توانیم از این متغیر برای اضافه کردن کلید منحصر به فرد به نام متد و متغیر در جاوا اسکریپت استفاده کنیم. همچنین می بینید که به جای رویداد OnClientClick ، تنظیم جاوا اسکریپت را روی آن سرور قرار می دهیم تا کلید منحصر به فرد بتواند به فراخوانی متصل شود.
در زیر کد کنترل WebUser است.

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UC_TestCS.ascx.cs" Inherits="UC_TestCS" %>
<script type="text/javascript">
function DisplayMessage_<%=uniqueKey %>() {
    var message = document.getElementById("<%=TextBox1.ClientID %>").value;
    alert(message);
    return false;
}
</script>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Show Message" />

درقسمت سبز رنگ بالا می توانید ببینید در کلید منحصر به فرد نام مختص را اضافه می کنیم. به این ترتیب، حتی اگر چندین WebUserControls در همان صفحه وب داشته باشیم، روشهای جاوا اسکریپت به درستی عمل خواهند کرد زیرا همه نامهای منحصر به فرد دارند. تصویر زیر نشانگر نام منحصر به فرد است.

 

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :