ورود

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 عصر
خسته نباشی