Diskuze: ASP.NET STRÁNKOVÁNÍ
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Momentálně to nedělá stránkování a vypíše se vše na 1 stránku
proc je to ccvm pole? navic s jednim prvkem? Ukaz ten viewmodel
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Affiliate_Katalog.Models;
namespace Affiliate_Katalog.ViewModel
{
public class CampaignCategoryViewModel
{
public Campaign campaign { get; set; }
public List<Campaign> campaignList { get; set; }
public List<Category> category { get; set; }
public List<AffiliateType> affiliateTypes { get; set; }
public Company company { get; set; }
public List<Company> companyList { get; set; }
}
}
Zkoušel jsem i
// GET: Campaigns
public ActionResult Index(string name, string sortOrder, string currentFilter, string searchString, int? page)
{
if (searchString != null)
{
page = 1;
}
else
{
searchString = currentFilter;
}
ViewBag.CurrentFilter = searchString;
int pageSize = 10;
int pageNumber = (page ?? 1);
CampaignCategoryViewModel CCVM = new CampaignCategoryViewModel();
CCVM.campaignList = GetCampaignsModel(searchString);
CCVM.campaignList.ToPagedList(pageNumber, pageSize);
CCVM.category = GetCategoryModel();
ViewBag.CurrentSort = sortOrder;
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
return View(CCVM);
}
Ale stejně mi to do View vrátí všechno
Proc to neudelas takhle?
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
Není mi jasné, jak to mám udělat, vzhledem k tomu, že mám jinou situaci ViewModel než v tom odkazu co jsi mi poslal. Mohl by jsi mi prosím naznačit, jak to udělat? Děkuji
pouzivej odpovedet... kouknu na to zitra. Posli i to view, kde vypisujes ten VM
@*@model IEnumerable<Affiliate_Katalog.Models.Campaign>
@model PagedList.IPagedList<Affiliate_Katalog.ViewModel.CampaignCategoryViewModel>
*@
@model Affiliate_Katalog.ViewModel.CampaignCategoryViewModel
@using PagedList.Mvc;
<link href="~/Content/PagedList.css" rel="stylesheet" type="text/css" />
@{
ViewBag.Title = "Seznam kampaní";
}
<h2>Affiliate kampaně </h2>
<a href="@Url.Action("Create", "Campaigns")"><button class="btn btn-primary">Přidat kampaň</button></a>
<div class="pull-right">
@using (Html.BeginForm("Index", "Campaigns", FormMethod.Get))
{
@Html.TextBox("SearchString", ViewBag.CurrentFilter as string, new { @Placeholder = "Hledej kampaně", @Class = "form-control-search" }) <input class="btn btn-default" type="submit" value="Hledat" />
}
</div>
<table class="table">
@foreach (var itemCl in Model.campaignList)
{
if (Model.campaignList.Count > 0)
{
<tr>
<th>
Název kampaně
</th>
<th>
Popis
</th>
<th>
Kategorie
</th>
<th></th>
<th></th>
</tr>
<tr>
<td>
@Html.DisplayFor(modelItem => itemCl.Name)
</td>
<td>
@if (itemCl.Description.Length > 60)
{
<html>
@System.Text.RegularExpressions.Regex.Replace(@itemCl.Description.Substring(0, 60), "<.*?>", string.Empty) [...]
</html>
}
else
{
<html>
@System.Text.RegularExpressions.Regex.Replace(@itemCl.Description, "<.*?>", string.Empty)
</html>
}
</td>
@* @foreach (var itemCat in Model.category)
{ <td>
if (ItemCam.CategoryId == itemCat.Id)
{
@itemCat.Name
}
}*@
<td>
<a target="_blank" href="@itemCl.UrlAffiliate"><button class="btn btn-primary">Registrovat se</button></a>
</td>
<td>
@* @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
@Html.ActionLink("Details", "Details", new { id=item.Id }) |
@* @Html.ActionLink("Delete", "Delete", new { id=item.Id })*@
<a href='@Url.Action("Details", "Campaigns", new { id = itemCl.Id, Name = StringHelp.RemoveDiacriticsAndSpaces(itemCl.Name) })'><button class="btn btn-success">Zobrazit více</button> </a>
</td>
</tr>
}
}
</table>
}
else if (Model.campaignList.Count == 0)
{
<br /><br />
<hr />
<center>
<h2>Nic nenalezeno</h2>
</center>
}
<br />
@*@if (Model.campaignList.PageCount > 1)
{
<h2>TESSF</h2>
@Html.PagedListPager(Model.campaignList, page => Url.Action("Index",
new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))
}
*@
<br />
Co ty 3 modely tam? Nech tam ten, ktery posilas z kontroleru. Tedy ccvm.
Predpokladam, ze se tam bude zobrazovat nekolikrat obsah ccvm viemodelu, ze? Abych to spravne teda pochopil...
3 tam sice jsou, ale jsou zakomentované. Aktivní je jen @model Affiliate_Katalog.ViewModel.CampaignCategoryViewModel
Bohužel tento portál neumí poznat komentář @*
Je potřeba vypsat list campaign a k tomu najít a vypsat název dané kategorie.
Tak jsem to vyřešil. Podle https://stackoverflow.com/…list-asp-mvc
Změnit v modelView místo List je tam
public IPagedList<Campaign> campaignList { get; set; }
a
// GET: Campaigns
public ActionResult Index(string name, string sortOrder, string currentFilter, string searchString, int? page)
{
if (searchString != null)
{
page = 1;
}
else
{
searchString = currentFilter;
}
ViewBag.CurrentFilter = searchString;
int pageSize = 10;
int pageNumber = (page ?? 1);
var CCVM = new CampaignCommentViewModel();
CCVM.categoryList = GetCategoryModel();
var campaigns = GetCampaignsModel(searchString);
CCVM.campaignList = campaigns.ToPagedList(pageNumber, pageSize);
CCVM.campaignList.ToPagedList(pageNumber, pageSize);
ViewBag.CurrentSort = sortOrder;
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
return View(CCVM);
}
Zobrazeno 13 zpráv z 13.