در آموزش قبلی ، شما مجموعه ای از صفحات وب را برای عملیات اصلی CRUD برای نهادهای دانشجویی پیاده سازی کردید. در این آموزش عملکرد مرتب سازی ، فیلتر و صفحه بندی را به صفحه فهرست دانش آموزان اضافه می کنید. شما همچنین یک صفحه گروه بندی ساده ایجاد می کنید.
تصویر زیر نشان می دهد که هنگام اتمام صفحه چگونه به نظر می رسد. عناوین ستون پیوندی هستند که کاربر می تواند برای مرتب سازی بر اساس آن ستون کلیک کند. با کلیک بر روی یک ستون که به طور مکرر بین سفارش صعودی و نزولی مرتب می شود.

در این آموزش ، شما:
- پیوندهای مرتب سازی ستون را اضافه کنید
- یک کادر جستجو اضافه کنید
- اضافه کردن صفحه بندی
- یک صفحه درباره
پیش نیازها
پیوندهای مرتب سازی ستون را اضافه کنید
برای افزودن مرتب سازی به صفحه شاخص دانشجویی ، روش شاخص کنترل کننده دانش آموز را تغییر داده و کد را به نمای شاخص دانشجویی اضافه می کنید.
عملکرد مرتب سازی را به روش فهرست اضافه کنید
در کنترلرها studentController. cs ، روش فهرست را با کد زیر جایگزین کنید:
این کد یک پارامتر مرتب سازی را از رشته پرس و جو در URL دریافت می کند. مقدار رشته پرس و جو توسط ASP.net MVC به عنوان پارامتر روش عمل ارائه شده است. پارامتر رشته ای است که یا "نام" یا "تاریخ" است ، به صورت اختیاری به دنبال یک زیرکور و رشته "نزولی" برای مشخص کردن نظم نزولی. ترتیب مرتب سازی پیش فرض صعودی است.
اولین باری که از صفحه فهرست درخواست می شود ، رشته پرس و جو وجود ندارد. دانش آموزان به ترتیب صعودی توسط Lastname نمایش داده می شوند ، که پیش فرض است که توسط مورد سقوط در بیانیه سوئیچ ایجاد شده است. هنگامی که کاربر روی یک ستون لینک عنوان ستون کلیک می کند ، مقدار مرتب سازی مناسب در رشته پرس و جو ارائه می شود.
از دو متغیر Viewbag استفاده می شود به گونه ای که نمای می تواند لینک های ستون را با مقادیر رشته پرس و جو مناسب پیکربندی کند:
این اظهارات سه گانه است. اولین مورد مشخص می کند که اگر پارامتر SortOrder تهی یا خالی باشد ، Viewbag. NamesorTparm باید روی "name_desc" تنظیم شود. در غیر این صورت ، باید روی یک رشته خالی تنظیم شود. این دو جمله این نمای را قادر می سازد تا لینک های عنوان ستون را به شرح زیر تنظیم کند:
| سفارش مرتب سازی فعلی | پیوند نام خانوادگی | پیوند تاریخ |
| نام خانوادگی صعود | نزولی | صعودی |
| نام خانوادگی نزول | صعودی | صعودی |
| تاریخ صعود | صعودی | نزولی |
| تاریخ نزول | صعودی | صعودی |
به عنوان جایگزینی برای نوشتن بیانیه های مختلف LINQ برای هر ترتیب مرتب سازی ، می توانید به صورت پویا یک عبارت LINQ ایجاد کنید. برای اطلاعات در مورد LINQ پویا ، به Linq Dynamic مراجعه کنید.
لینک های عنوان ستون را به نمای شاخص دانشجویی اضافه کنید
این کد از اطلاعات موجود در خصوصیات Viewbag برای تنظیم لینک های با مقادیر رشته پرس و جو مناسب استفاده می کند.
صفحه را اجرا کنید و بر روی نام خانوادگی و عناوین ستون تاریخ ثبت نام کلیک کنید تا تأیید کنید که مرتب سازی انجام می شود.
بعد از کلیک بر روی عنوان نام خانوادگی ، دانش آموزان به ترتیب نام خانوادگی نزولی نمایش داده می شوند.
یک کادر جستجو اضافه کنید
برای افزودن فیلتر به صفحه شاخص دانش آموزان ، یک جعبه متن و یک دکمه ارسال را به نمایش اضافه می کنید و در روش فهرست تغییرات مربوطه را ایجاد می کنید. جعبه متن به شما امکان می دهد رشته ای را وارد کنید تا در قسمت های نام و نام خانوادگی به جستجوی آن بپردازید.
عملکرد فیلتر را به روش فهرست اضافه کنید
در کنترل کننده ها studentController. cs ، روش فهرست را با کد زیر جایگزین کنید (تغییرات برجسته می شوند):
کد یک پارامتر SearchString را به روش Index اضافه می کند. مقدار رشته جستجو از یک کادر متن دریافت می شود که به نمای فهرست اضافه می کنید. همچنین یک بند جایی را به عبارت LINQ اضافه می کند که فقط دانش آموزانی را انتخاب می کند که نام یا نام خانوادگی آنها شامل رشته جستجو است. بیانیه ای که بند را اضافه می کند فقط در صورتی که مقداری برای جستجوی آن وجود داشته باشد ، اجرا می شود.
در بسیاری از موارد شما می توانید با همان روش یا در مجموعه Entity Framework Entity یا به عنوان یک روش فرمت در یک مجموعه حافظه تماس بگیرید. نتایج به طور معمول یکسان است اما در برخی موارد ممکن است متفاوت باشد.
به عنوان مثال ، اجرای چارچوب .net از روش حاوی همه ردیف ها را هنگام عبور یک رشته خالی به آن باز می گرداند ، اما ارائه دهنده Framework Entity برای SQL Server Compact 4. 0 ردیف های صفر را برای رشته های خالی باز می گرداند. بنابراین کد موجود در مثال (قرار دادن عبارت Where Where در یک عبارت IF) اطمینان می دهد که برای همه نسخه های SQL Server نتایج یکسانی دریافت می کنید. همچنین ، اجرای چارچوب .net از روش حاوی یک مقایسه حساس به مورد به طور پیش فرض انجام می دهد ، اما ارائه دهندگان سرور SQL Framework Entity به طور پیش فرض مقایسه های حساس را انجام می دهند. بنابراین ، فراخوانی روش Toupper برای انجام آزمون به صراحت مورد حساس ، تضمین می کند که نتایج هنگام تغییر کد بعداً برای استفاده از یک مخزن تغییر نمی کند ، که یک مجموعه iEnumerable را به جای یک شیء iQueryable باز می گرداند.(هنگامی که شما با استفاده از روش موجود در یک مجموعه iEnumerable تماس می گیرید ، اجرای چارچوب .net را دریافت می کنید ؛ وقتی آن را با یک شیء iQueryable صدا می کنید ، اجرای ارائه دهنده پایگاه داده را دریافت می کنید.)
مدیریت تهی ممکن است برای ارائه دهندگان مختلف پایگاه داده یا زمانی که از یک شی IQueryable استفاده می کنید در مقایسه با زمانی که از یک مجموعه IEnumerable استفاده می کنید متفاوت باشد. به عنوان مثال، در برخی از سناریوها، شرط Where مانند table. Column != 0 ممکن است ستون هایی را که دارای مقدار null هستند، برنگرداند. به طور پیش فرض، EF عملگرهای SQL اضافی تولید می کند تا برابری بین مقادیر تهی در پایگاه داده مانند حافظه کار کند، اما می توانید پرچم UseDatabaseNullSemantics را در EF6 تنظیم کنید یا متد UseRelationalNulls را در EF Core برای پیکربندی این رفتار فراخوانی کنید.
یک کادر جستجو به نمای نمایه دانشجو اضافه کنید
در ViewsStudentIndex. cshtml، کد برجسته شده را بلافاصله قبل از برچسب جدول باز اضافه کنید تا یک عنوان، یک کادر متنی و یک دکمه جستجو ایجاد کنید.
صفحه را اجرا کنید، یک رشته جستجو را وارد کنید و برای تأیید اینکه فیلترینگ کار می کند، روی Search کلیک کنید.
توجه داشته باشید که URL حاوی رشته جستجوی "an" نیست، به این معنی که اگر این صفحه را نشانه گذاری کنید، هنگام استفاده از نشانک، لیست فیلتر شده را دریافت نخواهید کرد. این همچنین در مورد پیوندهای مرتب سازی ستونی صدق می کند، زیرا آنها کل لیست را مرتب می کنند. بعداً در آموزش، دکمه جستجو را برای استفاده از رشته های پرس و جو برای معیارهای فیلتر تغییر می دهید.
اضافه کردن صفحه بندی
برای افزودن صفحه بندی به صفحه فهرست Students، با نصب بسته PagedList. Mvc NuGet شروع می کنید. سپس تغییرات بیشتری در روش Index ایجاد می کنید و پیوندهای صفحه بندی را به نمای Index اضافه می کنید. PagedList. Mvc یکی از بسیاری از بسته های صفحه بندی و مرتب سازی خوب برای ASP.net MVC است، و استفاده از آن در اینجا فقط به عنوان یک نمونه در نظر گرفته شده است، نه به عنوان توصیه برای آن نسبت به سایر گزینه ها.
بسته PagedList. MVC NuGet را نصب کنید
بسته NuGet PagedList. Mvc به طور خودکار بسته PagedList را به عنوان یک وابستگی نصب می کند. بسته PagedList یک نوع مجموعه PagedList و روش های پسوندی را برای مجموعه های IQueryable و IEnumerable نصب می کند. روش های افزودنی یک صفحه از داده ها را در مجموعه PagedList از IQueryable یا IEnumerable ایجاد می کنند و مجموعه PagedList چندین ویژگی و روش ارائه می دهد که صفحه بندی را تسهیل می کند. بسته PagedList. Mvc یک راهنمای صفحه بندی را نصب می کند که دکمه های صفحه بندی را نمایش می دهد.
از منوی Tools، NuGet Package Manager و سپس Package Manager Console را انتخاب کنید.
در پنجره Package Manager Console، مطمئن شوید که منبع Package nuget. org و پروژه پیش فرض ContosoUniversity باشد و سپس دستور زیر را وارد کنید:
پروژه را بسازید.
بسته بندی صفحه دیگر دیگر نگهداری نمی شود. بنابراین ، برای پروژه های جاری بهتر است از بسته X. PagedList استفاده کنید. تفاوت اصلی این است که X. PagedList یک مونتاژ قابل حمل است. این بدان معنی است که این بسته به صورت متقابل پلتفرم است و می تواند برای پروژه های وب و سایر پروژه های .net مورد استفاده قرار گیرد. بسته جدید نباید باعث ایجاد مشکلات سازگاری شود ، زیرا از نسخه 8. 4 به .net 6 منتقل شد.
عملکرد صفحه بندی را به روش فهرست اضافه کنید
در کنترل کننده ها studentController. cs ، یک بیانیه استفاده را برای فضای نام PagedList اضافه کنید:
روش فهرست را با کد زیر جایگزین کنید:
این کد یک پارامتر صفحه ، یک پارامتر سفارش مرتب سازی فعلی و یک پارامتر فیلتر فعلی را به امضای روش اضافه می کند:
اولین باری که صفحه نمایش داده می شود ، یا اگر کاربر روی پیوند صفحه بندی یا مرتب سازی کلیک نکرده است ، تمام پارامترها تهی هستند. در صورت کلیک روی پیوند صفحه بندی ، متغیر صفحه شامل شماره صفحه برای نمایش است.
یک ویژگی Viewbag با ترتیب مرتب سازی فعلی نمای را ارائه می دهد ، زیرا این امر باید در پیوندهای صفحه بندی گنجانده شود تا مرتب سازی مرتب سازی در هنگام صفحه بندی یکسان باشد:
یکی دیگر از ویژگی ها ، Viewbag. CurrentFilter ، نمایش را با رشته فیلتر فعلی ارائه می دهد. برای حفظ تنظیمات فیلتر در حین صفحه بندی ، این مقدار باید در لینک های صفحه بندی گنجانده شود و هنگام بازخوانی صفحه ، باید آن را به جعبه متن بازگرداند. اگر رشته جستجو در حین صفحه بندی تغییر یابد ، صفحه باید به 1 تنظیم شود ، زیرا فیلتر جدید می تواند منجر به نمایش داده های مختلف شود. رشته جستجو وقتی یک مقدار در کادر متن وارد می شود و دکمه ارسال فشار می یابد. در این حالت ، پارامتر SearchString تهی نیست.
در پایان این روش ، روش پسوند TopagedList در دانش آموزان Iqueryable Object ، پرس و جو دانشجویی را به یک صفحه واحد از دانش آموزان در یک نوع مجموعه که از صفحه بندی پشتیبانی می کند ، تبدیل می کند. سپس آن صفحه تک دانش آموزان به نمای منتقل می شود:
روش TopagedList یک شماره صفحه را می گیرد. دو علامت سؤال نمایانگر اپراتور تعقیب تهی است. اپراتور تهویه تهی یک مقدار پیش فرض را برای یک نوع قابل قبول تعریف می کند. عبارت (صفحه؟ 1) به معنای بازگشت مقدار صفحه در صورت داشتن مقدار است ، یا اگر صفحه تهی است ، 1 را برگردانید.
پیوندهای صفحه بندی را به نمای شاخص دانشجویی اضافه کنید
در نمایش ها student index. cshtml ، کد موجود را با کد زیر جایگزین کنید. تغییرات برجسته شده است.
بیانیه model در بالای صفحه مشخص می کند که نمای اکنون به جای یک شی لیست ، یک شیء PagedList را دریافت می کند.
جمله استفاده برای pagedlist. mvc به یاور MVC برای دکمه های صفحه بندی دسترسی می دهد.
کد از اضافه بار StartForm استفاده می کند که به آن اجازه می دهد FormMethod. get را مشخص کند.
پیش فرض شروع داده های فرم را با یک پست ارسال می کند ، به این معنی که پارامترها در بدنه پیام HTTP منتقل می شوند و نه در URL به عنوان رشته های پرس و جو. هنگامی که HTTP GET را مشخص می کنید ، داده های فرم در URL به عنوان رشته های پرس و جو منتقل می شوند ، که کاربران را قادر می سازد URL را علامت گذاری کنند. دستورالعمل های W3C برای استفاده از HTTP توصیه می کند که هنگام انجام عمل منجر به بروزرسانی شود ، باید از GET استفاده کنید.
کادر متن با رشته جستجوی فعلی آغاز می شود ، بنابراین وقتی روی یک صفحه جدید کلیک می کنید می توانید رشته جستجوی فعلی را مشاهده کنید.
پیوندهای هدر ستون از رشته پرس و جو برای انتقال رشته جستجوی فعلی به کنترلر استفاده می کند تا کاربر بتواند در نتایج فیلتر مرتب شود:
صفحه فعلی و تعداد کل صفحات نمایش داده می شود.
اگر صفحه ای برای نمایش وجود نداشته باشد ، "صفحه 0 از 0" نشان داده شده است.(در این حالت تعداد صفحه از تعداد صفحه بیشتر است زیرا Model. Pagenumber 1 و Model. pagecount 0 است)
دکمه های صفحه بندی توسط یاور PagedListPager نمایش داده می شود:
یاور PagedListPager تعدادی گزینه را ارائه می دهد که می توانید از جمله URL و یک ظاهر طراحی شده از آن استفاده کنید. برای اطلاعات بیشتر ، به Troygoode / PagedList در سایت GitHub مراجعه کنید.
برای اطمینان از عملکرد صفحه بندی ، روی پیوندهای صفحه بندی در سفارشات مرتب سازی مختلف کلیک کنید. سپس یک رشته جستجو را وارد کنید و دوباره پیگیری را امتحان کنید تا تأیید کنید که صفحه بندی نیز با مرتب سازی و فیلتر به درستی کار می کند.
یک صفحه درباره
برای صفحه درباره وب سایت دانشگاه Contoso ، شما نشان می دهد که تعداد دانشجویان برای هر تاریخ ثبت نام ثبت نام کرده اند. این نیاز به گروه بندی و محاسبات ساده در گروه ها دارد. برای انجام این کار ، موارد زیر را انجام می دهید:
- برای داده هایی که باید به نمای منتقل کنید ، یک کلاس مدل View ایجاد کنید.
- روش About را در کنترل کننده خانه اصلاح کنید.
- دیدگاه را اصلاح کنید.
مدل نمایش را ایجاد کنید
یک پوشه ViewModels در پوشه پروژه ایجاد کنید. در آن پوشه ، یک پرونده کلاس EnrollymentDateGroup. cs را اضافه کرده و کد الگوی را با کد زیر جایگزین کنید:
کنترل کننده خانه را اصلاح کنید
در HomeController. cs ، موارد زیر را با استفاده از بیانیه های زیر در بالای پرونده اضافه کنید:
یک متغیر کلاس را برای زمینه پایگاه داده بلافاصله پس از بریس فرفری باز برای کلاس اضافه کنید:
روش About را با کد زیر جایگزین کنید:
بیانیه LINQ اشخاص دانشجویی را با تاریخ ثبت نام گروه بندی می کند ، تعداد اشخاص را در هر گروه محاسبه می کند و نتایج را در مجموعه ای از اشیاء مدل View Group View ذخیره می کند.
یک روش dispose اضافه کنید:
نمای درباره
کد را در پرونده home about. cshtml با کد زیر جایگزین کنید:
برنامه را اجرا کنید و روی پیوند About کلیک کنید.
تعداد دانشجویان برای هر تاریخ ثبت نام در یک جدول نمایش داده می شود.

کد را دریافت کنید
منابع اضافی
پیوندها به سایر منابع چارچوب موجودیت را می توان در دسترسی به داده های ASP.net - منابع توصیه شده یافت.
مراحل بعدی
در این آموزش ، شما:
- پیوندهای مرتب سازی ستون را اضافه کنید
- یک کادر جستجو اضافه کنید
- اضافه کردن صفحه بندی
- یک صفحه درباره
برای یادگیری نحوه استفاده از انعطاف پذیری اتصال و رهگیری فرمان ، به مقاله بعدی بروید.< SPAN> بیانیه LINQ اشخاص دانشجویی را با تاریخ ثبت نام گروه های دانشجویی ، تعداد اشخاص در هر گروه را محاسبه می کند و نتایج را در مجموعه ای از اشیاء مدل View Group View ذخیره می کند.
آموزش تحلیل گری...
ما را در سایت آموزش تحلیل گری دنبال می کنید
برچسب :
نویسنده : ملیکا زارعی
بازدید : 48
تاريخ : پنجشنبه
14 ارديبهشت
1402 ساعت: 14:17