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


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.