سؤال

لدي ASP.NET linkbutton التحكم على النموذج.أود أن استخدام جافا سكريبت على جانب العميل ومنعها من نشر مرة أخرى إلى الخادم.(أود أن استخدام linkbutton التحكم حتى أستطيع أن الجلد و تعطيله في بعض الحالات, لذا مستقيم حتى العلامة غير المفضل).

كيف يمكنني منع من النشر مرة أخرى إلى الخادم ؟

هل كانت مفيدة؟

المحلول

ورمز ASPX:

<asp:LinkButton ID="someID" runat="server" Text="clicky"></asp:LinkButton>

ورمز وراء:

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        someID.Attributes.Add("onClick", "return false;");
    }
}

ما يجعل ك HTML هو:

<a onclick="return false;" id="someID" href="javascript:__doPostBack('someID','')">clicky</a>

في هذه الحالة، ما يحدث هو وظيفة عند _ النقر تصبح المصادقة الخاص بك. إذا كان غير صحيح، لا يتم تنفيذ وصلة "أ href". ومع ذلك، إذا كان صحيحا أ href سوف تحصل على تنفيذها. هذا يلغي آخر ظهرك.

نصائح أخرى

وهذا قد يبدو وكأنه الجواب غير مفيد ... ولكن لماذا استخدام LinkButton عن شيء بحتة من جانب العميل؟ استخدام معيار العلامة مرساة HTML ومجموعة العمل onclick لجافا سكريبت الخاصة بك.

إذا كنت في حاجة إلى الخادم لتوليد نص على ذلك الارتباط، ثم استخدام asp:Label كمحتوى بين علامات البداية والنهاية مرساة ل.

إذا كنت بحاجة إلى تغيير سلوك النصي بناء على تعليمات برمجية من جانب الخادم ديناميكيا، والنظر في asp:Literal كأسلوب.

ولكن ما لم تفعله النشاط من جانب الخادم من الحدث Click من LinkButton، هناك فقط لا يبدو أن الكثير من نقطة إلى استخدامه هنا.

ويمكنك أن تفعل ذلك أيضا

...LinkButton ID="BtnForgotPassword" runat="server" OnClientClick="ChangeText('1');return false"...

وأنه وقف على زر إعادة النشر الارتباط

ومجرد مجموعة أ href = "#"

<asp:LinkButton ID="myLink" runat="server" href="#">Click Me</asp:LinkButton>

وأعتقد أن عليك أن التحقيق في استخدام عنصر تحكم الارتباط التشعبي. انها تحكم من جانب الخادم (حتى تتمكن من التعامل مع وضوح الرؤية وهذا من التعليمات البرمجية)، لكنه يغفل را العادية 'العلامة مرساة ولا يسبب إعادة النشر.

في C #، كنت تفعل شيئا من هذا القبيل:

MyButton.Attributes.Add("onclick", "put your javascript here including... return false;");

فقط تم خلال هذا قبل بضع دقائق, الطريقة الصحيحة للقيام بذلك هو استخدام

  1. OnClientClick
  2. Return False()

كما في المثال التالي على سطر من التعليمات البرمجية:

<asp:LinkButton ID="lbtnNext" runat="server" OnClientClick="findAllOccurences(); return false();" Visible="false"/>

مجرد نسخ هذا الخط من التعليمات البرمجية العمل.

وبدلا من تنفيذ السمة:

public partial class _Default : System.Web.UI.Page{
 protected void Page_Load(object sender, EventArgs e)
 {
    someID.Attributes.Add("onClick", "return false;");
 }}

استخدم:

OnClientClick="return false;"

وداخل آسيا والمحيط الهادئ: العلامة LinkButton

واستدعاء وظيفة جافا سكريبت على الحدث onClick.

هل حاولت استخدام OnClientClick؟

var myLinkButton = new LinkButton { Text = "Click Here", OnClientClick = "JavaScript: return false;" };

<asp:LinkButton ID="someID" runat="server" Text="clicky" OnClientClick="JavaScript: return false;"></asp:LinkButton>

وشيء آخر يمكنك القيام به، إذا كنت ترغب في الحفاظ على موقف التمرير الخاص بك هو هذا:

<asp:LinkButton runat="server" id="someId" href="javascript: void;" Text="Click Me" />

وقد ترغب أيضا في الحصول على وظيفة العميل تعود كاذبة.

<asp:LinkButton runat="server" id="button" Text="Click Me" OnClick="myfunction();return false;" AutoPostBack="false" />

وكنت قد تنظر أيضا:

<span runat="server" id="clickableSpan" onclick="myfunction();" class="clickable">Click Me</span>

وI استخدام فئة يمكن النقر عليها لوضع الأمور في نصابها مثل المؤشر، اللون، وما إلى ذلك بحيث أن مظهره يشبه علامة مرساة، ولكن ليس لدي ما يدعو للقلق هو الحصول على نشرها مرة أخرى أو الحاجة إلى القيام أ href = " جافا سكريبت: فراغ (0)؛ " خدعة.

لماذا لا تستخدم لوحة تحديث اياكس فارغة وسلك linkbutton في الحدث انقر فوق لذلك؟ بهذه الطريقة فقط لوحة التحديث سوف الحصول على تحديث، وبالتالي تجنب إعادة النشر ويسمح لك لتشغيل جافا سكريبت الخاصة

ويبدو أن لا أحد يمكن القيام بذلك من هذا القبيل:

createEventLinkButton.Attributes.Add("onClick", " if (this.innerHTML == 'Please Wait') { return false; } else {  this.innerHTML='Please Wait'; }");

ويبدو أن هذا هو السبيل الوحيد الذي يعمل.

في وظيفة مسج جاهزة يمكنك أن تفعل شيئا مثل أدناه -

var hrefcode = $('a[id*=linkbutton]').attr('href').split(':');
var onclickcode = "javascript: if`(Condition()) {" + hrefcode[1] + ";}";
$('a[id*=linkbutton]').attr('href', onclickcode);

لتجنب تحديث الصفحة، إذا كانت return false لا يعمل مع استخدام asp:LinkButton

href="javascript: void;"

أو

href="#"

وجنبا إلى جنب مع OnClientClick="return false;"

<asp:LinkButton ID="linkPrint" runat="server" CausesValidation="False" href="javascript: void;"
        OnClientClick="javascript:self.print();return false;">Print</asp:LinkButton>

ما سبق هو سوف كود استدعاء متصفح الطباعة دون تحديث الصفحة.

وصلة استخدام HTML بدلا من الارتباط آسيا والمحيط الهادئ، ويمكنك استخدام التسمية بين صلة أتش تي أم أل جانب الخادم السيطرة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top