রেজার ডিফল্টরূপে স্ট্রিং এনকোড করে। এনকোডিং ছাড়াই রেন্ডারিংয়ের জন্য কি কোনও বিশেষ বাক্য গঠন আছে?
রেজার ডিফল্টরূপে স্ট্রিং এনকোড করে। এনকোডিং ছাড়াই রেন্ডারিংয়ের জন্য কি কোনও বিশেষ বাক্য গঠন আছে?
উত্তর:
ASP.NET এমভিসি 3 যেহেতু আপনি ব্যবহার করতে পারেন:
@Html.Raw(myString)
"myAttr='hello';myInt=10"
@(new HtmlString(myString))
পাশাপাশি ইতিমধ্যে উল্লিখিত @ এইচটিএমএল.রা (স্ট্রিং) পদ্ধতির হিসাবে আপনি যদি কোনও এমভিসিএইচটিএমএল স্ট্রিং আউটপুট করেন তবে এটি এনকোড হবে না। এইচটিএমএলহেল্পারে আপনার নিজের এক্সটেনশনগুলি যুক্ত করার সময়, বা আপনার ভিউ মডেল থেকে এমন কোনও মান ফেরত দেওয়ার সময় এটি কার্যকর হতে পারে যা আপনি জানেন যে এইচটিএমএল থাকতে পারে।
উদাহরণস্বরূপ, যদি আপনার দেখার মডেলটি ছিল:
public class SampleViewModel
{
public string SampleString { get; set; }
public MvcHtmlString SampleHtmlString { get; set; }
}
কোর 1.0+ (এবং এমভিসি 5+) এর জন্য এইচটিএমএলস্ট্রিং ব্যবহার করুন
public class SampleViewModel
{
public string SampleString { get; set; }
public HtmlString SampleHtmlString { get; set; }
}
তারপর
<!-- this will be encoded -->
<div>@Model.SampleString</div>
<!-- this will not be encoded -->
<div>@Html.Raw(Model.SampleString)</div>
<!-- this will not be encoded either -->
<div>@Model.SampleHtmlString</div>
@Html.Raw()
সতর্কতার সাথে ব্যবহার করুন কারণ আপনি এনকোডিং এবং সুরক্ষা নিয়ে আরও সমস্যার সৃষ্টি করতে পারেন। আমি নিজেই এটি করতে হয়েছিল বলে আমি ব্যবহারের কেসটি বুঝতে পেরেছি, তবে সাবধানতার সাথে ... কেবল সমস্ত পাঠ্য প্রবেশের অনুমতি দেওয়া এড়াতে হবে। উদাহরণস্বরূপ কেবল নির্দিষ্ট অক্ষর ক্রম সংরক্ষণ / রূপান্তর করুন এবং সর্বদা বাকীটি এনকোড করুন:
@Html.Raw(Html.Encode(myString).Replace("\n", "<br/>"))
তারপরে আপনার মনের শান্তি হবে যে আপনি কোনও সম্ভাব্য সুরক্ষা গর্ত তৈরি করেন নি এবং কোনও বিশেষ / বিদেশী অক্ষর সমস্ত ব্রাউজারে সঠিকভাবে প্রদর্শিত হয়।
@Html.Raw(Html.Encode(myString).Replace(Html.Encode("\n"), "<br/>"))
অ্যাকশনলিঙ্কের ক্ষেত্রে, এটি সাধারণত লিঙ্ক পাঠ্যটিতে এইচটিপি ইউটিলিটি E এনকোড ব্যবহার করে। HttpUtility.HtmlDecode(myString)
সেক্ষেত্রে আপনি যে স্ট্রিংটি উত্তীর্ণ করতে চেয়েছিলেন সেটির ডিকোড করতে এইচটিএমএলএকশনলিঙ্ক ব্যবহার করার সময় আপনি এটি আমার জন্য কাজ করতে পারেন
। উদাহরণ:
@Html.ActionLink(HttpUtility.HtmlDecode("myString","ActionName",..)
আপনি WritLiteral পদ্ধতিটিও ব্যবহার করতে পারেন
"'<>etc...
এগুলি থাকলে পালাতে পারবেন be সঠিক উপায়টি হ'ল এমভিসিএইচটিএমএল স্ট্রিং ব্যবহার করা যা "অবৈধ" অক্ষরগুলিকে মঞ্জুরি দেয়। উদাহরণস্বরূপ, আপনি যদি জসন ডেটা এনকোড করে থাকেন ... পুরো মডেলটি এনকোড না করেই