سؤال

أنا أستخدم Microsoft AJAX لتعليم قائمة جهات الاتصال بشكل حيوي، مع إعطاء حزمة JSON. قانون بلدي على النحو التالي:

function fillContactsFromData(contacts) {
    // this is just for debug to let me know that the data is correct
    if (contacts.length > 0) {
        alert('ID: ' + contacts[0].ID + ', Name: ' + contacts[0].Name);
    }

    $create(Sys.UI.DataView, { data: contacts }, null, null, $get('contacts'));
}

HTML المرتبطة هو كما يلي:

<div id="contacts" class="sys-template">
    <a onclick="removeContact('{{ ID }}');"><img src="remove.png" /></a>
    <a class="contact" rel="/Contacts/Index/{{ ID }}">{{ Name }}</a><br />
</div>

u003Ca>يتم استخدام العلامة الأولى لإطلاق برنامج نصي لإزالة جهة الاتصال، في حين أن الثانية تستخدم Cluetip JQuery Cluetip لإحضار مربع على تحوم (تفاصيل تخطي هنا).u003C/a>

المشكلة التي أحصل عليها هي أن HTML لا يتم تقديمه بشكل صحيح. ما يتم إنشاؤه هو:

<div id="contacts">
    <a><img src="remove.png" /></a>
    <a class="contact" rel="/Contacts/Index/{{ ID }}">Darren Oster</a><br />
</div>

يشير مربع التنبيه إلى البيانات مع معرف صالح (GUID) والاسم ("دارين OSTER"). يتم تقديم الاسم بشكل صحيح، لكن حقل المعرف لا يتم تقديمه في سمة "REL"، ويتم إزالة عبارة "OnClick" بالكامل.

هل هذا قيود على MS AJAX أو أفعل شيئا غير صحيح؟

شكرا لك مقدما.

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

المحلول

إذا كانت السمة هي احتواء أي تعبيرات {{}} يجب أن تكون القيمة بأكملها.

نعم: foo = "{{{{{{{'_ abc' + id}}"

NO: FOO = "ABC {{ID}}"

أما بالنسبة ل OnClick لا يتم إنشاؤها، فمن المحتمل أن يكون الأمر كذلك، ولكن أيا كان التفتيش الذي تستخدمه لا يظهر لك القيمة، حيث يتم تعيينه مع مجموعة مباشرة من Element.Onclick، وليس Addattribute ().

نصائح أخرى

وضعت لي اللفلينيات لي على المسار الصحيح، لذلك إليك الإجابة النهائية (في حالة اتخاذ أي شخص آخر هذا المسار) ...

أولا، كنت أستخدم معاينة سابقة ل MS AJAX 4.0. لقد قمت الآن بتحديث معاينة 5، والأشياء تعمل بشكل مختلف قليلا. إليك HTML النهائي (JavaScript لم يتغير):

<div id="contacts" class="sys-template">
    <a sys:onclick="{{ 'removeContact(\'' + ID + '\');' }}"><img src="remove.png" /></a>
    <a class="contact" sys:rel="{{ '/Contacts/Index/' + ID }}">{{ Name }}</a><br />
</div>

لاحظ أيضا أن المعاينة 5 تتطلب بادئة "SYS:" على أي سمات تحتوي على قيم مرتبطة بالبيانات، لذلك

<option value="{{ Value }}">{{ Text }}</option>

داخلu003Cselect> يصبح

<option sys:value="{{ Value }}">{{ Text }}</option>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top