اشتراکها
اشتراکها
افزونهی JSON Select
اشتراکها
json به csharp
از ویژگی Newtonsoft.Json.JsonIgnore برای عدم serialization یک خاصیت خاص به JSON استفاده کنید.
نظرات مطالب
ASP.NET MVC #21
با درود؛ من با استفاده از متد jQuery.Ajax و درخواست از یک کنترلر برای نمایش اطلاعات از دیتابیس به روش زیر عمل کردم
و کنترلر مربوط
و سوال اینکه وقتی از Return View استفاده کردم هیچ رکوردی بازگردانده نشد و با یک صفحه سفید مواجه شدم و باید حتما از Return Json استفاده کنم تا اطلاعات درخواستی نمایش داده بشه؟ آیا حتما باید از Return Json استفاده کرد ؟ و یا در کد نویسی من جایی اشکال هست ؟
<script type="text/javascript"> $(function () { getData(); }); function getData() { var $tbl = $('#tblEmployee'); $.ajax({ url: 'Home/EmployeeInfoData', type: 'Post', datatype: 'json', success: function (data) { if (data.length > 0) { $tbl.empty(); $tbl.append(' <tr><th>ID</th><th>Name</th><th>Family</th></tr>'); var rows = []; for (var i = 0; i < data.length; i++) { rows.push(' <tr><td>' + data[i].Id + '</td><td>' + data[i].Name + '</td><td>' + data[i].Family + '</td></tr>'); } $tbl.append(rows.join('')); } } }); } </script>
و کنترلر مربوط
[HttpPost] public ActionResult EmployeeInfoData() { InfoEmployee mp = new InfoEmployee(); var names = mp.GetData(); return Json(names); }
- خروجی تاریخ JSON استاندارد، نمیتواند شمسی باشد و Kendo UI اطلاعات خودش را به فرمت JSON دریافت میکند. اطلاعاتی که به کمک Razor نمایش دادید، نهایتا یک رشته معمولی است و نه یک تاریخ استاندارد ISO 8601 که توسط JSON.NET بازگشت داده میشود.
- امکان «تهیه یک JsonConverter سفارشی» در JSON.NET وجود دارد؛ مثلا تاریخ را تبدیل به یک رشتهی دلخواه کنید و بازگشت دهید.
+ قسمت «فرمت تاریخ میلادی به شمسی در حین نمایش» را در متن فوق مطالعه کنید. این تبدیل سمت کلاینت هست و نه سمت سرور (به کمک کتابخانهی moment-jalaali.js).
- امکان «تهیه یک JsonConverter سفارشی» در JSON.NET وجود دارد؛ مثلا تاریخ را تبدیل به یک رشتهی دلخواه کنید و بازگشت دهید.
+ قسمت «فرمت تاریخ میلادی به شمسی در حین نمایش» را در متن فوق مطالعه کنید. این تبدیل سمت کلاینت هست و نه سمت سرور (به کمک کتابخانهی moment-jalaali.js).
با سلام و تشکر
ولی موقعی که مثلا اینجوری مینویسم
خطای مربوطه هم Cannot read property 'message' of undefine میده
موقعی که اطلاعات اینجوری باشه درست کار میکنه و نتیجه رو نمایش میده
return Json( "test");
completeHandler: function (data) { alert(data) }
return Json( new { success = true, message = Resources.Global.Texts.Successful });
completeHandler: function (data) { alert(data.success) }
تو فایر باگ هم میبینم اطلاعات در response وجود داره ولی اینجا نمایش نمیده
نظرات مطالب
معرفی System.Text.Json در NET Core 3.0.
یک نکتهی تکمیلی: خروجی یونیکد در JSON نهایی
اگر مقادیر خواص شما دارای حروف یونیکد باشند، در خروجی نهایی ارائه شده، این حروف escape میشوند. یعنی به صورت برای مثال u003E\ نمایش داده خواهند شد. البته این مساله هیچ تاثیری را بر روی تبدیل این خروجی JSON، به شیء ابتدایی ندارد. فقط هدف آنها بالا بردن امنیت قطعه string تولید شده جهت «درج خام» آن در یک صفحهاست. برای نمونه اگر قصد ندارید این رشتهی نهایی JSON تولید شده را در بین تگهای <script> یک صفحهی HTML به صورت مستقیما قرار دهید، میتوانید این escape پیشفرض را غیرفعال کنید:
options = new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, WriteIndented = true }; jsonString = JsonSerializer.Serialize(weatherForecast, options);
var options = new JsonSerializerOptions { Encoder = JavaScriptEncoder.Create(UnicodeRanges.All) };
نظرات مطالب
استفاده از Froala WYSIWYG Editor در ASP.NET
سلام؛ اگه کنترلر توی یک Area باشه چطوری میتونیم مسیر عکسهای ذخیره شده تو ریشه سایت رو به فرمت Json برگردونیم؟ مثلا ما یک Area داریم به نام Admin و کنترلر Post هم تو این Area هست. من وقتی عکس رو آپلود میکنم چیزی نمایش داده نمیشه رفتم تو حالت Developer مرورگر دیدم همچین خطایی میده :
http://localhost:1455/Admin/Post/Content/Images/a_sunny_days_end-wallpaper-1440x900.jpg 404 (Not Found)
دلیلش هم اینه که تو متد FroalaUploadImage مقدار Json برگشتی به صورت زیر هست :
return Json(new { link = "Content/Images/" + fileName }, JsonRequestBehavior.AllowGet);
که اشاره به مسیر بالا داره. من میخوام خروجی Jsonبه صورت زیر باشه
http://localhost:1455/Content/Images/a_sunny_days_end-wallpaper-1440x900.jpg