PDA

View Full Version : سوال: مشکل صفحه بندی و ادغام با جستجو



jaykob
چهارشنبه 16 خرداد 1397, 19:18 عصر
با سلام


من زمانی که یک جستجو به شکل زیر انجام می دم و داخل ViewModel خودم فیلد زیاد دارم . توی صفحه اصلی مشکلی وجود نداره ولی بعد از اینکه به صفحه دوم می رم نتیجه جستجو عادی می شه و list معمولی برمی گردونه . داستان اینجاست که کاربر زمانی روی جستجو می زنه من ViewModel خودم رو پر می کنم ولی صفحه ۲ به بعد متد post اتفاق نمی افته و جستجو از کار می افته . می شه بفرمایید چطور حلش کنم ؟ برای نمایش کادر جستجو هم از یک partial استفاده می کنم



public ActionResult AllUsers(SearchViewModel search, int pageid = 1)
{
/// code
}

[HttpGet]
public ActionResult _SearchList()
{

return View();
}

[HttpPost]
public ActionResult _SearchList(SearchViewModel search)
{
search.SearchStatus = true;
return RedirectToAction("AllUsers", search);
}





ممنون

hakim22
چهارشنبه 16 خرداد 1397, 21:54 عصر
برای جستجوی همراه با صفحه بندی از PagedList استفاده کنید. ضمن اینکه اطلاعات جستجو بین دور درخواست جایی ذخیره نمیشه. باید با استفاده از یک فرم و ViewData اون رو از درخواست به درخواست بعدی پاس بدید.

jaykob
پنج شنبه 17 خرداد 1397, 10:42 صبح
برای جستجوی همراه با صفحه بندی از PagedList استفاده کنید. ضمن اینکه اطلاعات جستجو بین دور درخواست جایی ذخیره نمیشه. باید با استفاده از یک فرم و ViewData اون رو از درخواست به درخواست بعدی پاس بدید.

سلام

ممنون از شما . PagedList رو سرچ کردم و ایده خوبی هست و ازش از این به بعد استفاده می کنم . ولی داستان سر اینکه من نمی دونم الان این مقدار viewModel رو چطور با یک Viewdata از یک ویو به کنترل پاس بدم ؟ چون که من با یک تگ a دارم صفحه بندی رو می کنم و post اتفاق نمی افته .

ممنون می شم راهکاری بهم بدید به همراه یک مثال کوتاه چون واقعا مشکلی شده این موضوع

تشکر

r4hgozar
جمعه 18 خرداد 1397, 11:55 صبح
سلام.
شما میتونید _SearchList خودتون دوباره عمل سرچ رو انجام بدین
یعنی متدی که با اون سرچ می کنید رو در صفحه بصورت hidden نگه دارید و بعد اون رو پاس بدین بصورت ajax و دوباره عمل سرچ رو انجام بدین و این بار صفحه 2 رو نشون بدید.

jaykob
شنبه 19 خرداد 1397, 12:16 عصر
سلام

ممنون

ولی فکر می کنم یک راه منطقی تر و تمیز تر هم باشه برای این مورد . ممنون می شم راهنمایی کنن دوستان

تشکر

hakim22
شنبه 19 خرداد 1397, 13:29 عصر
کنترلر از خودش حافظه نداره و وضعیت جاری سایت رو نگه داری نمیکنه.
شما می خواهید عبارت جستجو در فرم ثابت بمونه ولی کاربر بتونه بین صفحات گردش کنه. ساده ترین راه استفاده از PaginatedList (https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application)هست.

حالا اگر میخواهید دستی این قابلیت رو پیاده کنید باید راهی پیدا کنید که اطلاعات بین Request ها در سرور شناسایی بشه.

هربار که کاربر روی شماره ی یکی از صفحات کلیک میکنه یک Request جدید به سرور ارسال میشه. این درخواست جدید هیچ درکی که قبلا موقعیت سایت کجا بوده نداره.

پس باید در هر درخواست مقدار شماره ی صفحه و عبارت جستجو شده رو به سرور ارسال کنید. و وقتی صفحه لود میشه اون مقدار رو جایی در صفحه پنهان کنید.

هر شماره ی صفحه یک لینکه و در اون لینک می توانید مقدار RouteValue رو قرار بدید و به سرور ارسال کنید.

mohsen.j1990
پنج شنبه 24 خرداد 1397, 03:00 صبح
دوست عزیز برای صفحه بندی روش های زیادی وجود داره که متداول ترین روش استفاده از PagedList هست که نمونش رو میتونید تو لینک زیر ببینید
https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-
application (https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application)
بهینه تر اینه که عمل جستجو و صفحه بندی در داخل خود دیتابیس و توسط یک storeprocidure انجام بشه
میتونید از Jtable (http://www.jtable.org)هم استفاده کنید