ورود

View Full Version : سوال: ارسال دیتا تیبل از یک اکشن به اکشن دیگر در یک کنترلر



faranakk
جمعه 02 بهمن 1394, 22:37 عصر
با عرض سلام و احترام
من یک اکشن دارم که داخل اون سرچ انجام میشه و نتیجه رو درون همون اکشن برمیگردونه(فیلد هایی که روشون سرچ انجام میشه بالا هستن و لیستی از نتیجه جستجو زیرش لود میشه)
بالای این لیست یک دکمه گزارش در اکسل دارم
برای اینکه این اکشن که برام خروجی اکسل میده کار کنه ،نیاز به دیتا تیبل دارم که نتایج جستجو از اکشن قبل رو به این اکشن بفرسته (درون دیتا تیبل)

خودم از tempdata استفاده کردم ولی temp data ابجکت بهم میده نه datatable (من نمیدونم میشه ابجکت رو به دیتا تیبل تبدیل کرد یا نه)

راهی هست که اصلا خروجی اکسل تو همین اکشن سرچ باشه و قرار نباشه دیتا تیبل رو بفرستم؟
یا اگه راهی نیست چطور میتونم دیتا تیبل رو بفرستم؟
و اگه نه باید چه کار کنم ؟
این کد های اکشنی که لیست و جستجو رو انجام میده:


public ActionResult UserList(string Name,string Family(

{
var DbI = new appDb();

var query = from item in DbI.Users select item;



if (!String.IsNullOrEmpty(Name))
{
query = query.Where(x => x.Name.Contains(Name));
}

if (!String.IsNullOrEmpty(Family))
{
query = query.Where(x => x.Family.Contains(Family));
}
return View(query);
}



و کد دانلود فایل اکسل:







public ActionResult DownloadFile()
{
worksheet.Cells.ImportDataTable(dts, true, "A1");
}

که این dts همون دیتا تیبلی هست که باید بهش بدم

با تشکر

sonicuser
شنبه 03 بهمن 1394, 01:51 صبح
DataTable dt=(DataTable)TempData["x"];

faranakk
شنبه 03 بهمن 1394, 09:16 صبح
ممنون از جواب شما
ولی الان که میخوام اینجوری dt رو بگیرم این ارور رو میده

Unable to cast object of type 'System.Data.Entity.DynamicProxies.ApplicationUser _' to type 'System.Data.DataTable'

r4hgozar
شنبه 03 بهمن 1394, 09:37 صبح
سلام.
خوب شما می تونی با viewmodel چند تا مقدار رو پاس بدی به ویو تون.
سوالتون یه جوری واسم گنگه.
نفهمیدم دقیقا چی می خواین!!!!

sonicuser
شنبه 03 بهمن 1394, 09:58 صبح
ممنون از جواب شما
ولی الان که میخوام اینجوری dt رو بگیرم این ارور رو میده

Unable to cast object of type 'System.Data.Entity.DynamicProxies.ApplicationUser _' to type 'System.Data.DataTable'



مگه شما دیتا تیبل رو توی ویو بگ نریختین؟؟؟ خب چرا نباید بتونه cast کنه؟؟

faranakk
شنبه 03 بهمن 1394, 10:00 صبح
ببینید من یه کنترلر دارم که عمل سرچ و بازگردوندن لیست کاربران رو برام انجام میده (که الان درست کار میکنه و مشکلی نیست)
حالا میخوام این لیست رو تو خروجی اکسل داشته باشم
برای خروجی گرفتن یه اکشن دیگه دارم
باید دیتا تیبل به تابعی که داخل این اکشن هست بدم و خروجی اکسل بگیرم
مشکل اینجاست که : این کوری که میره سرچ انجام میده و نتیجه رو برمیگردونه ،باید نتیجه رو بریزم داخل دیتا تیبل و بعد این دیتا تیبل رو انتقال بدم به اکشنی که خروجی میگیره برام
ممنون

faranakk
شنبه 03 بهمن 1394, 10:03 صبح
مگه شما دیتا تیبل رو توی ویو بگ نریختین؟؟؟ خب چرا نباید بتونه cast کنه؟؟



چرا داخل ویو بگ بریزم؟ من میخوام از یه اکشن برم به اکشن دیگه و از ویو بگ نمیشه استفاده کرد

r4hgozar
شنبه 03 بهمن 1394, 10:46 صبح
خوب به نظرم این کارو رو که انجام میدین یکم دارین میچیونین کار رو.
شما یه ویو مدل درست کن که 2 تا مقدار باشه. مقداری که می خوای تو صفحه ای که سرچ میشه نمایش داده بشه و مقداری که می خوای تو اکسل نمایش داده بشه.
خوب حالا این 2 مقدار پر شدن و شما الان در اکشنی هستین که داره نتیجه جستجو رو میده.
وقتی طرف رو دکمه اکسل کلیک کرد شما از این اکشن میایم و مقداری رو که نیاز داری و تو ویو مدل سیو شده پاس میدی به اون اکشن و در اونجا دریافت می کنی.و اکسل رو پر می کنی و نمایش میدی.

این کار شدنیه اما راه بهینه ای نیست.

شما باید در واقع پارامتر هایی رو که نیاز دارین برای پر کردن کوئری برای ساخت دیتا برای اکسلتون رو از این اکشن ( اکشن نتیجه )پاس بدین به اکسنی که اکسل رو براتون می سازه.
بخاطر اینکه شاید یکی اصلا نخواد اکسل رو ببینه یا چیزای دیگه.
خیلی کار های دیگه می شه انجام داد.
مثلا شما می تونین نتیجه جستجو رو با stimull نشون بدین و اگه طرف خواست خودش بیاد و خروجی اکسل بگیره از کار..

امیدوارم مشکلتون رو درست متوجه شده باشم