# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > ASP.NET MVC > سوال: استفاده از product card و فراخوانی اطلاعات از دیتابیس در MVC ؟

## ghasem110deh

سلام به همه ...
دوستان من یه پروداکت کارت طراحی کردم ، که طالاعات مثل عکس و نام و قیمت و ... از دیتابیس خونده میشه و نمایش داده میشه ! (البته توی یک کارت)
حالا سوالم اینه که توی asp MVC چطور به تعداد سطر های دیتابیس میشه این کارت رو روی صفحه تکرار کرد ؟ والبته دارای صفحه بندی هم باشه ! (یا قابلیت لود بیشتر)

توی سی شارپ و برنامه ویندوزی که همه چیز رو میریختیم توی گرید  :لبخند گشاده!: 
توی اندروید از آداپتر و مدل استفاده میشد ... اما توی MVC یکم گیج کننده است ... اگه کسی اینکار رو انجام داده یا اموزش خوب سراغ داره لطفا راهنمایی بفرمایید 

تشکر

----------


## ghasem110deh

ببخشید ... با تاپیک asp MVC اشتباه گرفتم (اونم همزمان باز بود)
مدیران عزیز اگه ممکنه پست رو منتقل کنید

----------


## سعید کشاورز

تاپیک منتقل شد

----------


## ghasem110deh

با تشکر از آقای کشاورز عزیز :-)

----------


## nunegandom

با سلام
برای قسمت صفحه بندی میتونید از این استفاده کنید:

namespace Helper.Paging
{
    public class PagingInfo
    {
        public int TotalItems { get; set; }
        public int ItemsPerPage { get; set; }
        public int CurrentPage { get; set; }
        public int TotalPages
        {
            get
            {
                return (int)Math.Ceiling((decimal)TotalItems / ItemsPerPage);
            }
        }
    }
    public static class PagingHelpers
    {
        public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func<int,string> pageUrl)
        {
            var result = new StringBuilder();
            for (int i = 1; i <= pagingInfo.TotalPages; i++)
            {


                var anchor = new TagBuilder("a");
                anchor.MergeAttribute("href", pageUrl(i));
                anchor.InnerHtml = i.ToString();
                if (i == pagingInfo.CurrentPage)
                {
                    anchor.AddCssClass("active");
                }
                var icon = "<i>___</i>";
                anchor.InnerHtml = icon;
                result.Append(anchor.ToString());
            }
            return MvcHtmlString.Create(result.ToString());
        }
    }
}

یک کنترلر احتیاج دارید که صفحه رو بتونه به صورت Get هم بگیره یا اصلا کاربر بدون صفحه میخواد ببینتش:
دوتا متد هم اضافه که ببینه صفحه قبلی موجود هست یا خیر و صفحه بعدی موجود هست یا خیر که دکمه نمایش بده کاربر بزنه بره صفحه بعدی یا قبلی

 private GalleryVM GetModule(int? page)
        {
            var model = new GalleryVM();


            var items = _Products.Skip((page.GetValueOrDefault() - 1) * PageSize).Take(PageSize);
            model.Products = ConvertToVM(items);
                model.PagingInfo = new PagingInfo
                {
                    CurrentPage = page.GetValueOrDefault(),
                    ItemsPerPage = PageSize,
                    TotalItems = ProductCount
                };
            if (HaveNextPage(model.PagingInfo.CurrentPage,model.P  agingInfo.TotalPages))
            {
                if (page<1)
                {
                    page = 1;
                }
                model.next_page = page + 1;
            }
            if (HavePrevPage(model.PagingInfo.CurrentPage, model.PagingInfo.TotalPages))
            {
                model.prev_page = page.GetValueOrDefault() - 1;
            }
            return model;
        }
        private bool HavePrevPage(int current,int totalPage)
        {
            if (current>1)
            {
                return true;
            }
            return false;
        }
        private bool HaveNextPage(int current, int totalPage)
        {
            if (current<totalPage)
            {
                return true;
            }
            return false;
        }



یک View هم احتیاج دارید به یک همچین صورتی

@model DomainModel.DashboardVM.GalleryVM
<div id="dvCarpets">
    @foreach (var item in Model.Products)
    {
        <div class="col-sm-4">
            <div class="col-xs-4 col-sm-6 nopadding carpet-leftside">
                <a href="@Url.Action("Index","Single",new { url = item.Link })" aria-label="@item.CarpetID">
                    <picture>
                        <source class="img-gallery" srcset="@Url.Content(item.ImageWebpSmall)" type="image/webp" alt="@item.Alt" />
                        <img class="img-gallery" src="@Url.Content(item.ImageJPGSmall)" alt="@item.Alt">
                    </picture>
                </a>
                <p class="golden table specification-padding">
                    ID :
                    <span class="white cell">@item.CarpetID</span>
                    <a class="cell" href="@Url.Action("Index","Single",new { url = item.Link })">Carpet Spec</a>
                </p>
            </div>
            <div class="col-sm-6 hidden-xs hidden-sm nopadding gallery-detail-side">
                <article class="gallery gallery-font">
                    <ul>
                        <li>Size: @item.SizeX X @item.SizeY CM</li>
                        <li>Materials: @item.Silk% Silk &amp; @item.Wool% Wool</li>
                    </ul>
                </article>
            </div>
        </div>
    }
</div>
@if (Model.prev_page >= 1)
{
    <a href="@Url.Action("Index",new { page = Model.prev_page })" aria-label="Previous" class="prevBig" id="prev"><svg class="social-icon">
    <use xlink:href="@Url.Content("~/Content/sprite.svg")#arrow-left"></use>
</svg></a>
}
@if (Model.next_page != null)
{
    <a href="@Url.Action("Index",new { page = Model.next_page })" aria-label="Next" class="nextBig" id="next"><svg class="social-icon">
    <use xlink:href="@Url.Content("~/Content/sprite.svg")#arrow-right"></use>
</svg></a>
}
<a id="view_carousel" aria-label="Carousel View Mode" class="dw-right" href="javascript**:void(0);">
    <svg class="social-icon">
        <use xlink:href="@Url.Content("~/Content/sprite.svg")#view-carousel"></use>
    </svg>
</a>
<div class="LinkBuilding">
    @Html.PageLinks(Model.PagingInfo, xc => Url.Action("Index", new { page = xc }))
</div>

صفحه بندی اون پایین میوفته

----------


## ghasem110deh

آقای nunegandom تشکر  :لبخند: 
البته هنوز قالب سایت رو تموم نکردم (چون تازه کارم) ... ولی امنحان میکنم و اگه مشکلی بود همینجا مطرح میکنم !

بازم تشکر

----------


## general67

میتونی از روش های متفاوتی استفاده کنی.حتی از خود sql هم میتونی اسفاده کنی .
اما یه روش جالب که خود میکروسافت ارایه داده:
https://docs.microsoft.com/en-us/asp...vc-application

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

----------

