PDA

View Full Version : سوال: ارسال آرایه از نوع Guid در JsonResult



hastiam
شنبه 27 دی 1393, 08:27 صبح
سلام دوستان
من یک آرایه ای از نوع Guid دارم که میخوام با ajax این آرایه رو بخونم و سمت سرور ارسال کنم تا عملیاتی رو آن انجام شود وقتی آرایه فقط یک مقدار داشته باشد action درست عمل می کند اما وقتی دو یا بیشتر می شود پارامتر ورودی یعنی ids ،هیچ مقداری رو نمی گیره یعنی null است، برای حل این مشکل اومدم آرایه رو به جای Guid از نوع string گرفتم که در این صورت هم کل Guid ها رو در ایندکس اول آرایه قرار میده یعنی یک رشته بسیار طولانی ایجاد می کنه مثل
[0] = "264492c8-3882-4fa4-8df9-dd165668a2d2,e023ab7e-8156-42f5-8826-942317a66594,281002f3-b15c-4b15-b570-88d92824eacc,8b4894e0-cc84-4b89-bad6-0f2fba5ac426"
که اگه تعداد Guidهام بیشتر از 10 تا بشه اونوقت باز هم چیزی نشون نمیده اگه هر کدوم از این Guidها رو در ایندکس های جدا قرار بده مشکلم حل میشه ولی نمیدونم چرا همه رو تو یک ایندکس قرار میده؟!!!!
تابع ajax ای که نوشتم به صورت زیر است :


function deleteMessages(){
var url = '@Url.Action("Delete", new { Controller = "Message" })';
var selected=[];
var CHKcount=0;


$('input:checked').each(function () {
CHKcount++;
selected.push($(this).val());
});


if(CHKcount > 0){
$.ajax({
url: url,
data: "ids=" + selected,
dataType: 'json',
type: 'post',
async: false,
success: function (info) {
.....
},
error: function (e, x) {
alert(status.x);
}
});
}
else
{
alert("لطفا يک یا چند سطر را انتخاب کنيد");
}
}

و مقدار ورودی در actionام رو هم که به صورت زیر نوشتم :


public JsonResult Delete(Guid[] ids)
{
try
{
.....
}
catch
{
.....
}
return Json("");
}

به طور خلاصه برنامه بالا رو توضیح میدم : در فرمم بیشتر از 100 checkbox دارم که هر کدوم از این چک باکسها یک مقداری از نوع Guid دارند گفتم اگه هر کدوم از این چک باکسها انتخاب شد مقدار اون رو تو آرایه ای به نام selected قرار بده و به عنوان پارامتر ورودی، سمت سرور ارسال کن ....

alireza.tabesh
یک شنبه 28 دی 1393, 10:43 صبح
data: JSON.stringify(selected),
dataType: 'json',
contentType: 'application/json',


برای ارسال آرایه از JSON.stringigy استفاده کن و در متد نیز ids را به selected تغییر نام بده

hastiam
یک شنبه 28 دی 1393, 16:47 عصر
ممنون از وقتی که گذاشتید از این روش هم استفاده کردم ولی
کل Guid ها رو در ایندکس اول آرایه قرار میده و یک رشته بسیار طولانی ایجاد می کنه مثل :
"[\"9b4a79bc-ffa4-4e54-8bcc-d33b1084ca3f\",\"6a28ac7e-a2d4-4f96-bd91-880446006214\"]" که اگه تعداد Guid ها زیاد باشه این روش جوابگو نیست.

aroshanzamir
یک شنبه 28 دی 1393, 22:33 عصر
سلام : وقت بخیر
من منظور شما را درست متوجه نشدم :
شما می خواهید آرایه ای از نوع حالا هر چیزی مثلا string با ajax به یک اکشن متد ارسال کنید و اون اکشن متد با توجه به آرایه دریافتی یک سری عملیات را انجام داده و در نهایت یک خروجی با فرمت JSON برگرداند ... اگر منظور شما را درست گفته باشم الان مشکل کجاست ؟

hastiam
دوشنبه 29 دی 1393, 08:27 صبح
سلام : وقت بخیر
من منظور شما را درست متوجه نشدم :
شما می خواهید آرایه ای از نوع حالا هر چیزی مثلا string با ajax به یک اکشن متد ارسال کنید و اون اکشن متد با توجه به آرایه دریافتی یک سری عملیات را انجام داده و در نهایت یک خروجی با فرمت JSON برگرداند ... اگر منظور شما را درست گفته باشم الان مشکل کجاست ؟
سلام
بله منظورم دقیقا همون چیزی هست که فرمودید، مشکلم اینه که کل دیتاهایی رو که با ajax به اکشن متد می فرستم تو index اول آرایه قرار میده یعنی به صورت زیر :
ids = {string[1]}
و
[0] = "6a28ac7e-a2d4-4f96-bd91-880446006214,1409198a-b730-4cae-9cb5-e905d5111bfe,491de339-f802-40d0-a156-c5ed23034acc"
در حالی که هر کدام از Guidها رو باید در یک ایندکس جدا از آرایه قرار بده. یعنی پارامتر ورودی در اکشن متد باید به صورت زیر باشد :
ids = {string[3]}
و
[0] = "6a28ac7e-a2d4-4f96-bd91-880446006214"
[1]="1409198a-b730-4cae-9cb5-e905d5111bfe"
[2]="491de339-f802-40d0-a156-c5ed23034acc"

aroshanzamir
دوشنبه 29 دی 1393, 23:51 عصر
سلام دوست من : وقت شما بخیر
راه های متعدی برای انجام اینکار وجود داره شکه شما بتونید آرایه ورودی را پر کنید :
مثلا در نمونه زیر : همه چیز در تصویر زیر واضح است .. اگر سوالی داشتی بپرس

موفق باشی

127732