রেজার ব্যবহার করে, আমি কীভাবে একটি জাভাস্ক্রিপ্ট ভেরিয়েবলের বুলিয়ান রেন্ডার করব?


144

আমি কীভাবে একটি সিএসটিএমএল ফাইলে জাভাস্ক্রিপ্ট ভেরিয়েবলের বুলিয়ান রেন্ডার করব?

বর্তমানে এটি একটি বাক্য গঠন ত্রুটি দেখায়:

<script type="text/javascript" >

    var myViewModel = {
        isFollowing: @Model.IsFollowing  // This is a C# bool
    };
</script>

@ একটি বৈধ জেএস অপারেটর নয়। এর অর্থ, এটি কেবল স্ট্রিংগুলিতেই ঘটতে পারে
— ইভান ককির

এই প্রশ্নটি আমাকে বুড়ো করে তোলে
— নিকোস

টি # কী তা আমি জানি না, তাই আমি ধরে নিয়েছিলাম এটির অর্থ সি # @ নিকোস;)
— মফাই ২

আপনার মন্তব্যটির কোনও অর্থ নেই
— নিকোস

বাহ এই ক্যু সত্যিই রেপকে ধাক্কা মেরেছিল
— নিকোস

উত্তর:


298

আপনি চেষ্টা করতে পারেন:

isFollowing: '@(Model.IsFollowing)' === '@true'

এবং একটি সর্বোত্তম উপায় ব্যবহার করা হয়:

isFollowing: @Json.Encode(Model.IsFollowing)

63
@Json.Encode(Model.IsFollowing)imho সবচেয়ে মার্জিত সমাধান। ধন্যবাদ!
— সান্দ্রো

2
সাধারণত একাধিক বুলিয়ান ব্যবহার হচ্ছে যা পুরো মডেলকে এনকোডিং করার পরে জিনিসগুলি সুন্দর এবং সহজেই ব্যবহারযোগ্য করে তোলে। যেমন: var মডেল = @ এইচটিএমএল.রউ (জসন.এনকোড (মডেল)) এবং তারপরে আপনি কেবল মডেলকে কল করতে পারেন sফসফুলিং (দুঃখিত আমি মন্তব্য কোডটি সঠিকভাবে ফর্ম্যাট করতে জানি না)
— জিন

@using System.Web.Helpersকোডটি সম্পূর্ণ করতে যুক্ত করুন ।
— টায়লোরাসউইফফান

29

জেএসএন বুলিয়ান অবশ্যই ছোট হাতের হতে হবে।

অতএব, এটি চেষ্টা করুন (এবং //লাইনে মন্তব্য দেওয়ার জন্য এনটিও নিশ্চিত করুন):

var myViewModel = {
    isFollowing: @Model.IsFollowing.ToString().ToLower()
};

অথবা (দ্রষ্টব্য: আপনার নাম স্থানটি ব্যবহার করা দরকার System.Xml):

var myViewModel = {
    isFollowing: @XmlConvert.ToString(Model.IsFollowing)
};

1
.ToString () পদ্ধতিটি সম্ভবত সবচেয়ে দক্ষ। '@ Model.IsFollowing.ToString ()। ToLowerInvariant ()' ব্যবহার করা কিছুটা দক্ষ এবং কিছুটা সহজবোধ্য হতে হবে।
— এক্সডিএস

এটি জাভাস্ক্রিপ্টে দুর্দান্তভাবে পড়ার কারণে পদ্ধতিটি ব্যবহার করে, স্ট্রিং এবং কম করা অবশ্যই আমার বিকল্পের মধ্যে পরিষ্কার।
— ফ্রাঙ্ক থমাস

28

কারণ একটি অনুসন্ধান আমাকে এখানে এনেছে: এএসপি.নেট কোরে, IJsonHelperকোনও Encode()পদ্ধতি নেই। পরিবর্তে, ব্যবহার করুন Serialize()। উদাহরণ:

isFollowing: @Json.Serialize(Model.IsFollowing)    

3
As.net কোর উল্লেখ করার জন্য ধন্যবাদ!
— শরীফ মামুন

13
var myViewModel = {
    isFollowing: '@(Model.IsFollowing)' == "True";
};

আপনি কেন জিজ্ঞাসা করছেন Trueনা true... ভাল প্রশ্ন:
বুলিয়ান কেন? টুস্ট্রিং আউটপুট "সত্য" এবং "সত্য" নয়


এটি নিয়ে প্রশ্ন করার দরকার নেই, তবে @Model.IsFollowingআসলে কী বৈধ জেএস সিনট্যাক্সের এনকোডিং রয়েছে ? বা এটি বুলেয়ান হওয়ার কারণেই এটি নির্ভর করবে?
— gahooa

@ মডেল.আইএসফোলিং হ'ল রেজার সিনট্যাক্স, জেএস নয়
— নিকোস

@ গাহোয়া, না এটি নয়, এটি রেজার ইঞ্জিন সহ সার্ভারে পার্স করা হয়েছে।
— gdoron মনিকা

@ নিকোস, তারপরে চেষ্টা করুন:'@(Model.IsFollowing)'
— জিডোরন মনিকা

@ নিকোস, আপনি কি এটি চালানোর চেষ্টা করেছিলেন? অনেক সময় এটি কেবল ভিজ্যুয়াল স্টুডিও ইস্যু তবে এটি পুরোপুরি ঠিক আছে runs এটি চালানোর চেষ্টা করুন!
— gdoron মনিকা

4

এখানে ব্যবহার করার জন্য আরেকটি বিকল্প বিবেচনা করা হবে, ব্যবহার করে !! বুলিয়ান রূপান্তর।

isFollowing: !!(@Model.IsFollowing ? 1 : 0)

এটি ক্লায়েন্টের পাশে নিম্নলিখিতটি উত্পন্ন করবে, 1 টি সত্য এবং 0 টিকে রূপান্তরিত হবে।

isFollowing: !!(1)  -- or !!(0)

গৌণ সংশোধন !! @ (মডেল.আইএস অনুসরণ করছেন? 1: 0) দুর্দান্ত কাজ করে
— মুরগী

3

একটি সমাধান যা পড়তে সহজ এটি হ'ল:

isFollowing: @(Model.IsFollowing ? "true" : "false")
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.