রেজার এবং জাভাস্ক্রিপ্ট কোড মিশ্রিত করুন


171

আমি কীভাবে রেজার এবং জেএস মিশ্রিত করতে পারি তা নিয়ে আমি বেশ বিভ্রান্ত। এটি এখনকার ফাংশনটি নিয়ে আমি আটকে রয়েছি:

<script type="text/javascript">

        var data = [];

        @foreach (var r in Model.rows)
        {
                data.push([ @r.UnixTime * 1000, @r.Value ]);
        }

যদি আমি সি # কোডের সাথে ঘোষণা করতে পারতাম <c#></c#>এবং সমস্ত কিছু ছিল জেএস কোড - এটি আমার পরে যা হবে:

<script type="text/javascript">

        var data = [];

        <c#>@foreach (var r in Model.rows) {</c#>
                data.push([ <c#>@r.UnixTime</c#> * 1000, <c#>@r.Value</c#> ]);
        <c#>}</c#>

এটি অর্জনের সেরা পদ্ধতি কোনটি?


2
স্পষ্টতই সিনট্যাক্স হাইলাইট করা আমার <c#>ট্যাগগুলির সাথে দুর্দান্ত এবং বিভ্রান্ত :
কাইল ব্র্যান্ডট

1
আপনি এই ভিউটির এইচটিএমএল আউটপুট চেক করেছেন? এটি কীভাবে দেখায় এবং আপনি কীভাবে আলাদা করতে চান?
সুকরু

এটি সম্পর্কে ত্রুটি ছুঁড়েছে Conditional Compilation তাই আমি এইচটিএমএলটি দেখতে পাচ্ছি না - সুতরাং আমি বিশ্বাস করি এটি সি # কোড এর অংশ বলে মনে হচ্ছে।
কাইল ব্র্যান্ড্ট

1
এটি একটি জাভাস্ক্রিপ্ট ত্রুটির মতো বলে মনে হচ্ছে: webdeveloper.com/forum/showthread.php?t=99780 । সঠিক ত্রুটির বার্তাটি কী এবং আপনি এটি কোথায় পাবেন?
সুকরু

2
আমি মনে করি এটি এমন একটি ক্ষেত্রে যেখানে জেএস এবং সি # কে এত ঘনিষ্ঠভাবে মিশ্রিত করার চেষ্টা করা পড়া / রক্ষণাবেক্ষণের জন্য ব্যথা হবে। আমি আনন্দিত যে সংকলকটি আপনাকে এই কোড থেকে প্রত্যাখ্যান করেছেন। :)
জিম বোল্লা

উত্তর:


332

ব্যবহার <text>:

<script type="text/javascript">

   var data = [];

   @foreach (var r in Model.rows)
   {
      <text>
            data.push([ @r.UnixTime * 1000, @r.Value ]);
      </text>
   }
</script>

27
মৃত্যুর সময় জাভাস্ক্রিপ্ট ব্লকগুলিতে রেজারটি সূক্ষ্মভাবে কাজ করে তবে সিনট্যাক্স হাইলাইট করা সমস্ত ধরণের বিভ্রান্তি পেতে পারে তা আমি ঘৃণা করি। এটি সমস্ত রেজার কোডকে অবৈধ সিনট্যাক্স হিসাবে হাইলাইট করে কারণ এটি আমার বিশ্বাস জাভাস্ক্রিপ্ট মোডে আটকে আছে।
শেভ

2
এই কোডটি যদি একটি বান্ডিল থাকে তবে কি হবে ?? আমি কি জাভাস্ক্রিপ্ট ফাইলের ভিতরে কোড লিখতে পারি ??
ncubica

2
কোনও ভেরিয়েবলের চেয়ে অন্যটির চেয়ে কম এবং রেজার সাইকো হয় কিনা তা পরীক্ষা না করা অবধি নিখুঁতভাবে কাজ করে!
সিবিপি

1
আপনার ধারণাটি ভুল হওয়ার চেয়ে আপনি যদি বান্ডলে রেজার চান তবে @ কনবিকা। রেজার জাভাস্ক্রিপ্ট নয়, দেখার জন্য।
100r

1
@ncubica এই পোস্টটি পুরানো, কিন্তু আপনার প্রশ্নের সমাধান: একটি জাতীয় ফাইলের মধ্যে একটি ফাংশন লিখুন দিয়ে রেন্ডার, Scripts.Renderতারপর, একটি ফাংশন কল <script>ট্যাগ। ঠিক করুণাময় নয়, তবে এটি বেশিরভাগ (পড়ুন: সাধারণ) ব্যবহারের ক্ষেত্রে কাজ করে।
সিনজাই

81

একটি কোড ব্লক ইনসাইড (যেমন, @foreach), আপনি মার্কআপ (অথবা, এই ক্ষেত্রে, জাভাস্ক্রিপ্ট) চিহ্নিত করতে প্রয়োজন সঙ্গে @:বা <text>ট্যাগ

মার্কআপ প্রসঙ্গে, আপনার কোড ব্লক ( @{ ... }বা @if, ...) সহ চারপাশে কোডের দরকার


আপনি কেন "মার্কআপ চিহ্নিত করুন" বলছেন, বিষয়বস্তুটি আসলে মার্কআপ থাকলে এটি কোনও সমস্যা হবে না।
ম্যাক্স তোরো

1
@ ম্যাক্স: যদিও এটি মার্কআপের মতো দেখাচ্ছে না, এটি মার্কআপ। (সার্ভার-সাইড কোডের বিপরীতে)
স্লাকস

@:আমি কি খুঁজছিলাম, দুর্দান্ত!
মুফ্লিক্স


12

কখনও কখনও আরও ভাষা মিশ্রিত করবেন না।

<script type="text/javascript">
    var data = @Json.Encode(Model); // !!!! export data !!!!

    for(var prop in data){
      console.log( prop + " "+ data[prop]);
    }

সমস্যার ক্ষেত্রে আপনিও চেষ্টা করতে পারেন

@Html.Raw(Json.Encode(Model));

এটি দুর্দান্ত, তবে বৈধ উদাহরণ রয়েছে যেখানে আমাদের মিশ্রিত হওয়া দরকার। তবে এটি আমিই সমাধানটি ব্যবহার করেছি কারণ এটি পুরোপুরি ফিট করে।
হিমশীতল

3
মনে রাখবেন, এই হয় ভাষায় মিশ। আপনার কাছে একটি বিবৃতি রয়েছে যা অর্ধ-জাভাস্ক্রিপ্ট ("var ডেটা =") এবং অর্ধ-রেজার / সি # ("@ জসন.এনকোড (মডেল)")। এটি কেবলমাত্র একটি কম আক্রমণাত্মক মিশ্রণ, তবে এটি একটি রেজার / সি # "ফোরচ" থাকার চেয়ে কোনও কম মিশ্রণ নয় যার শরীরে জাভাস্ক্রিপ্ট উত্পন্ন উত্পন্ন করে। :-)
জোনাথন গিলবার্ট

3
এটি ফিরে আসে Uncaught SyntaxError: Unexpected token &কারণ মডেলটি এরকম কিছু হয়ে যায়[{&quot;Id&quot;:1,&quot;Name&quot;:&quot;Name}]
ওয়েইহুই গুও

1

জাভাস্ক্রিপ্টটি ভিউ থেকে আলাদা করার জন্য একটি অপ্রচলিত পদ্ধতি, তবে এটিতে এখনও রেজার ব্যবহার করে কোনও Scripts.cshtmlফাইল তৈরি করা এবং আপনার মিশ্র জাভাস্ক্রিপ্ট / রেজারটি সেখানে রাখা।

Index.cshtml

<div id="Result">
</div>

<button id="btnLoad">Click me</button>

@section scripts
{
    @Html.Partial("Scripts")
}

Scripts.cshtml

<script type="text/javascript">
    var url = "@Url.Action("Index", "Home")";

    $(document).ready(function() {
        $("#btnLoad").click(function() {
            $.ajax({
                type: "POST",
                url: url ,
                data: {someParameter: "some value"},
                contentType: "application/json; charset=utf-8",
                dataType: "json",

                success: function(msg) {
                    $("#Result").text(msg.d);
                }
            });
        });
    });
</script>

0

আপনি <text>জাভাস্ক্রিপ্ট সহ সিএসটিএমএল কোড উভয়ের জন্য ট্যাগ ব্যবহার করতে পারেন


"<text>" ট্যাগটির উপরের উত্তরটি অনুপস্থিত
সুরেন্দ্র কুমার লেগিসেটি

এটিকে বিন্যাস করতে কোড নির্বাচন করার পরে ব্যাকটিকস বা সিটিআরএল + কে ব্যবহার করুন
সুরজ রাও

-1

জেএস স্ক্রিপ্টের অভ্যন্তরে @ {in এ আপনার রেজার কোডটি মুড়িয়ে রাখুন এবং ঠিক @ ব্যবহার করার বিষয়ে সচেতন হন কখনও কখনও এটি কার্যকর হয় না:

function hideSurveyReminder() {
       @Session["_isSurveyPassed"] = true;
    }

এটি উত্পাদন করবে

function hideSurveyReminder() {
       False = true;
    }

ব্রাউজারে = (

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.