تحديد السمة ONLOAD الهيئة في أحد الصفحات الرئيسية Asp.net MVC

StackOverflow https://stackoverflow.com/questions/207150

سؤال

ولدي وجهة نظر باستخدام صفحة رئيسية يحتوي على بعض جافا سكريبت التي تحتاج ليتم تنفيذها باستخدام ONLOAD من الجسم. ما هو أفضل وسيلة لضبط ONLOAD على بلدي MasterPage فقط لبعض الآراء؟

في فكرة حاولت كان لتمرير اسم الدالة جافا سكريبت كما ViewData. ولكن أنا لا أريد حقا بلدي تحكم لدينا لمعرفة جافا سكريبت على الصفحة. في الحقيقة أنا لا أحب هذا النهج ...

<body onload="<%=ViewData["Body_OnLoad"]%>">
<asp:ContentPlaceHolder ID="MainContent" runat="server" />

وتحرير - أعتقد انه من المستحسن استخدام مستند الحدث مسج جاهزا بدلا من ذلك ...

وأي أفكار أخرى؟

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

المحلول

ولقد تم استخدام النمط التالي مع مشروعي MVC الحالي، ويبدو أن العمل جيد جدا للشبيبة بلدي العمل حتى الآن ...

وضمن رسالتي ماجستير الصفحة I تحميل تصل رسالتي ملفات البرامج النصية القياسية التي أريد لاستخدامها في جميع صفحات المحتوى الخاص بي (أشياء مثل jquery.js، global.js، مسج، الإضافات، والملفات .CSS و الخ). وبعد ذلك تحدد أيا الأحداث أن هناك حاجة في بلدي الصفحة الرئيسية (ONLOAD، onSave، وما إلى ذلك). كل محتوى الصفحة التي أقوم بإنشائها سوف يكون ذلك في ملف شبيبة الخاصة المرتبطة به وأنا تحميل هذا الملف النصي ضمن محتوى الصفحة .aspx اتصال. يتم التعامل مع أي شبيبة الأحداث التي يجب أن تنفذ بشكل مختلف بين صفحات المحتوى في ملف محتوى الفردية شبيبة. وذلك أساسا بلدي الصفحات الرئيسية لديها مجموعة من الوظائف شبيبة أن كتاباتي محتوى الصفحة ستنفذ. الآن أنا فقط تخزين تلك قالب شبيبة التوقيعات وظيفة في ملف ونسخ ولصقها في كل ملف content.js جديد أنني بحاجة إلى خلق. ومع ذلك، أنا أفكر في بناء مولد رمز أو أداة من شأنها أن يبصق هذه قالب توقيعات بالنسبة لي في أي شبيبة جديد ملف أحتاج خلق (إذا شبيبة لديها شكل من أشكال القدرة واجهة أو الميراث ميزات اسمحوا لي أن أعرف).

لذلك باختصار:

وMasterPage.Master الأحمال: jquery.js، global.js، plugins.js

والأحمال ContentPage: ContentPage.js

وGlobal.js يحتوي على وظائف أن الصفحة الرئيسية تحتج التي لا تتغير بين صفحات المحتوى جنبا إلى جنب مع أية وظائف روتينية العالمية الأخرى.

وكل ContentPage.js تنفذ انها الوظائف الخاصة للصفحة محتوى جنبا إلى جنب مع تلك المهام ويتضرع الصفحة الرئيسية التي لها سلوك مختلف.

نصائح أخرى

والآن بعد أن مسج رسميا جزءا من ASP.NET MVC، أود أن أوصي استخدامه. انها صغيرة، ويضيف طن من قيمة إلى التطبيق الخاص بك.

وأود أن نوصي بإضافة نسخة مصطفى من مسج يحتوي على تعليقات التحسس ما يلي:

مسج-1.2.6-التحسس. شبيبة

وبعد ذلك إضافته إلى مجلد البرامج النصية الخاصة بك (جديد في MVC بيتا 1)، ومرجع له مثل هذا:

<script language="javascript" type="text/javascript" src="../../Scripts/jquery-1.2.6-intellisense.js"></script> 

في التعليمات البرمجية الخاصة بك يمكنك الآن إضافة وظيفة مثل هذا:

$(document).ready(function() {
   // do stuff when DOM is ready
});

وبما أنك ذكرت أنك تريد فقط أن يحدث ذلك في بعض الآراء، يمكنك إضافة عنصر نائب في صفحتك الرئيسية مثل هذا:

<asp:contentplaceholder id="JavascriptPlaceholder" runat="server"></asp:contentplaceholder>  

وبعد ذلك من وجهة نظرك، هل يمكن أن تختار لوضع التعليمات البرمجية في هناك، أم لا.

والذي من شأنه أن يذهب داخل رئيس القسم

والحل من المدونة: باستخدام ONLOAD الجسم مع ASP.net 2.0 MasterPages

MasterPage.master

<head>
<asp:ContentPlaceHolder runat="server" id="Headers">
</asp:ContentPlaceHolder>
<script language=javascript>
   function mp_onload() {
     if(window.body_onload != null)
     window.body_onload();
   }
</script>
</head>
<body onload="mp_onload();">

Default.aspx

<asp:Content ID="Content2" ContentPlaceHolderID="Headers" Runat="Server">
<script language="javascript">
   function body_onload()
   {
       //do something
   }
</script>
</asp:Content>
 

ويجب أن يكون بالتأكيد باستخدام مسج أو إطار جافا سكريبت آخر على أي حال.

هل لديك حدات التحكم الخاصة بك تمر نوعا من وضع مؤشر إلى وجهات نظركم، ولكن ليس وجهات النظر محددة أشياء مثل أسماء وظائف جافا سكريبت. الأمر متروك للجهات نظركم إلى الخريطة مؤشرات الحالة إلى أسماء وظيفة جافا سكريبت.

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