طرق عرض ASP.NET MVC3 RC: بناء جملة لتضمين رمز داخل

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

  •  25-09-2019
  •  | 
  •  

سؤال

تواجه مشكلة في تضمين رمز C# داخل كتلة JavaScript MVC3 RC1 عرض الحلاقة. ما هي بناء الجملة الذي يجب أن أستخدمه لجعل هذا العمل؟ أحصل على تحذيرات على سبيل المثال. ثابت متوقع على متغير ISOK بين آخر. (بدون علامة نصية ، لم يتم التعرف على الكود التالي كـ JavaScript)

@{bool isOk = true;}

<script type="text/javascript">
    var tmp1 = "";
    @if (isOk)
    { 
        <text>
            var tmp=""; // this should be interpreted as javascript
        </text>       
    }
</script>
هل كانت مفيدة؟

المحلول

أنت بحاجة إلى <text> علامة للإشارة إلى أن المحتويات لا يتم تقييمها على الخادم. علي سبيل المثال:

@{
    var isOK = true;
}

<script type="text/javascript">
    var tmp1 = "";
    @if (isOK)
    { 
        <text>
            var tmp = "foo";
        </text>       
    }
</script>

سوف يخرج في الصفحة الناتجة:

<script type="text/javascript">
    var tmp1 = "";
    var tmp = "foo";
</script>

بعيد مثل ال Expected Constant تحذير قلق ، حسنًا ، لا يزال Razor Intellisense في بيتا ، لذا فهو بعيد عن الكمال. إنه مجرد تحذير يمكنك تجاهله بأمان. الشيء المهم هو أن التطبيق يعمل وينبعث من HTML صالح. آمل أن يكون هذا شيء يتم إصلاحه في المنتج النهائي. من التجربة الشخصية ، التحذيرات الوحيدة التي أثق بها هي التحذيرات المنبعثة من قبل برنامج التحويل البرمجي C#. عندما أعمل في وجهة نظر ، أتجاهل بأمان جميع التحذيرات المجنونة التي تنبعث منها Visual Studio لأنني أعلم أنه من الخطأ.

نصائح أخرى

بديل (أكثر terse وأسهل قراءة IMO) هو الهروب مرة أخرى إلى النص على النحو التالي:

<script type="text/javascript"> 
    var tmp1 = ""; 
    @if (isOK) 
    {  
        @:var tmp = "foo";
    } 
</script> 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top