View Full Version : ایجاد داده json و ارسال به view
Black_Hammer
چهارشنبه 26 آبان 1395, 16:47 عصر
سلام چطور می تونم یک داده json رو ایجاد کنم بعد توی یک اکشن return کنم
parsdarab
چهارشنبه 26 آبان 1395, 22:40 عصر
return Json(new { status = true, message = Resource.Message.SuccessOperation }, JsonRequestBehavior.AllowGet);
Black_Hammer
پنج شنبه 27 آبان 1395, 01:17 صبح
return Json(new { status = true, message = Resource.Message.SuccessOperation }, JsonRequestBehavior.AllowGet);
این بخش دومش رو میشه بفرمایید معنیش چی هست یا چیکار می کنه ممنون از راهنمایی تون JsonRequestBehavior.AllowGet
Moien Tajik
پنج شنبه 27 آبان 1395, 09:36 صبح
به طوره پیشفرض بر روی DenyGet قرار داره که اجازه GET رو برای درخواست json برای امنیت نمیده ، که با AllowGet میتونین درخواست GET رو انجام بدید .
میتونید با ایجاد یک Custom Action Filter از تکرار جلوگیری کنید و بصورت یک Attribute بالای یک اکشن فقط بزارید :
public class AllowJsonGetAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
var jsonResult = filterContext.Result as JsonResult;
if (jsonResult == null)
throw new ArgumentException("Action does not return a JsonResult, attribute AllowJsonGet is not allowed");
jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
base.OnResultExecuting(filterContext);
}
}
و در بالای اکشن هاتون بجای JsonRequestBehavior.AllowGet :
[AllowJsonGet]
public JsonResult MyAjaxAction()
{
return Json("this is my test");
}
parsdarab
پنج شنبه 27 آبان 1395, 09:51 صبح
به صورت پیش فرض این پارامتر با DenyGet تنظیم شده است
به معنی این است که داده جیسون نفرست این به خاطر مسائل امنیتی و حملات گذاشته شده است
اگر شما داده ی مهم و حساس ندارید این پارامتر را تغییر دهید به AllowGet
Black_Hammer
پنج شنبه 27 آبان 1395, 10:59 صبح
ممنون از راهنماییتون
منظور از حملات ممکنه حملات sql-injection باشه ؟ اگه پاسخ شما بله هست آیا بهتر که برای دیتای مهم از $.post استفاده کنیم یا گذینه بهتری هم هست؟ ممنون می شم راهنمایی بفرمایید.
Black_Hammer
پنج شنبه 27 آبان 1395, 11:00 صبح
ممنون از راهنماییتون
منظور از حملات ممکنه حملات sql-injection باشه ؟ اگه پاسخ شما بله هست آیا بهتر که برای دیتای مهم از $.post استفاده کنیم یا گذینه بهتری هم هست؟ ممنون می شم راهنمایی بفرمایید.
Black_Hammer
پنج شنبه 27 آبان 1395, 11:24 صبح
به طوره پیشفرض بر روی DenyGet قرار داره که اجازه GET رو برای درخواست json برای امنیت نمیده ، که با AllowGet میتونین درخواست GET رو انجام بدید .
میتونید با ایجاد یک Custom Action Filter از تکرار جلوگیری کنید و بصورت یک Attribute بالای یک اکشن فقط بزارید :
public class AllowJsonGetAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
var jsonResult = filterContext.Result as JsonResult;
if (jsonResult == null)
throw new ArgumentException("Action does not return a JsonResult, attribute AllowJsonGet is not allowed");
jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
base.OnResultExecuting(filterContext);
}
}
و در بالای اکشن هاتون بجای JsonRequestBehavior.AllowGet :
[AllowJsonGet]
public JsonResult MyAjaxAction()
{
return Json("this is my test");
}
میشه بفرمایید که فضای نامی این اتریبیوت چی هست چون افزونه ReSharper هم نتونست کمکم کنه.[AllowJsonGet]
Black_Hammer
پنج شنبه 27 آبان 1395, 11:54 صبح
میشه بفرمایید که مشکل این کجاست؟
$("button").click(function () {
var url = "/Home/GetStudentInfo";
$.getJSON(url, function (data) {
$("#search").append("<div>" + data.FirstName + "</div>");
});
});
public JsonResult GetStudentInfo()
{
var contactInfo = new Movie
{
FirstName = "Bob",
LastName = "Cravens",
Age = 23
};
return Json(contactInfo, JsonRequestBehavior.AllowGet);
}
Moien Tajik
پنج شنبه 27 آبان 1395, 12:18 عصر
میشه بفرمایید که فضای نامی این اتریبیوت چی هست چون افزونه ReSharper هم نتونست کمکم کنه.[AllowJsonGet]
ببینید فضای نامی نداره چون Custom هست یعنی خودتون برای راحتی کار اون کد بالا رو داخل یه کلاس میزارید و بعد از AllowJsonGet در بالای اکشن ها استفاده میکنید .
Black_Hammer
پنج شنبه 27 آبان 1395, 12:45 عصر
میشه بفرمایید که مشکل این کجاست؟
$("button").click(function () {
var url = "/Home/GetStudentInfo";
$.getJSON(url, function (data) {
$("#search").append("<div>" + data.FirstName + "</div>");
});
});
public JsonResult GetStudentInfo()
{
var contactInfo = new Movie
{
FirstName = "Bob",
LastName = "Cravens",
Age = 23
};
return Json(contactInfo, JsonRequestBehavior.AllowGet);
}
این سوال رو بنده در stackoverflow هم مطرح کردن ولی کسی جوابی نداشت این جا هم کسی نظری نداره؟
parsdarab
پنج شنبه 27 آبان 1395, 13:00 عصر
این طوری بنویس
$(document).ready(function () {
$("#test").click(function () {
var url = "/Home/GetStudentInfo";
$.getJSON(url, function (data) {
$("#search").append("<div>" + data.FirstName + "</div>");
});
});
});
<input id="test" type="button" value="test" />
نکته اش اینه
$("#test")
Black_Hammer
پنج شنبه 27 آبان 1395, 13:14 عصر
مشکل برطرف شد . به خاطر این بود که هیچ elementy با اون id نداشتم:قهقهه::خجالت::قهقهه:
parsdarab
پنج شنبه 27 آبان 1395, 14:46 عصر
خسته نباشی
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.