Asp.net mvc 数据驱动局部视图
我有一个视图使用一个名为newsModels的模型,它使用IpagedList,但是在同一个视图中,我添加了一个局部视图,我想列出添加到站点的10个最新新闻项,我想将此局部视图包括在newsitems视图以及整个站点的其他视图中 最好的方法是什么。我只成功地列出了IpagedList显示的新闻项目的标题,但仍然不太正确 我假设我需要为局部视图创建一个单独的控制器,但我找不到任何关于如何执行此操作的指导 有人能提供任何建议/指导吗Asp.net mvc 数据驱动局部视图,asp.net-mvc,Asp.net Mvc,我有一个视图使用一个名为newsModels的模型,它使用IpagedList,但是在同一个视图中,我添加了一个局部视图,我想列出添加到站点的10个最新新闻项,我想将此局部视图包括在newsitems视图以及整个站点的其他视图中 最好的方法是什么。我只成功地列出了IpagedList显示的新闻项目的标题,但仍然不太正确 我假设我需要为局部视图创建一个单独的控制器,但我找不到任何关于如何执行此操作的指导 有人能提供任何建议/指导吗 //Models public class partialNews
//Models
public class partialNewsMenu
{
public IEnumerable<NewsModels> newsTitle { get; set; }
}
public class NewsModels
{
public int id { get; set; }
public string newsTitle { get; set; }
[AllowHtml]
public string newsDesc { get; set; }
public string imagePath { get; set; }
public string addedBy { get; set; }
public DateTime dateAdded { get; set; }
public bool publishNewsItem { get; set; }
}
//Controller
public ActionResult OpsiumNews(string sortby, int? page)
{
ViewBag.ImageName = "MSLOffice.jpg";
ViewBag.ImageDesc = "Opsium News";
ViewBag.OverlayText = "N/A";
ViewBag.pageTitle = "Opsium News";
ViewBag.Title = "Opsium | News";
if (sortby == null)
{
ViewBag.MostRecent = "Selected";
}
else
{
ViewBag.MostRecent = "";
}
ViewBag.Oldest = "";
ViewBag.PostedBy = "";
ViewBag.ListNewsModels = new SelectList(db.NewsModels, "Id", "newsTitle");
var NewsModelsList = db.NewsModels.Select(s => s.newsTitle);//.Where(s => s.publishNewsItem);
var NewsModels = db.NewsModels.Where(c => c.publishNewsItem);
switch (sortby)
{
case "1":
NewsModels = NewsModels.OrderBy(s => s.dateAdded);
ViewBag.MostRecent = "Selected";
break;
case "2":
NewsModels = NewsModels.OrderByDescending(s => s.dateAdded);
ViewBag.Oldest = "Selected";
break;
case "3":
NewsModels = NewsModels.OrderBy(s => s.addedBy);
ViewBag.PostedBy = "Selected";
break;
default: // Name ascending
NewsModels = NewsModels.OrderBy(s => s.dateAdded);
ViewBag.MostRecent = "Selected";
break;
}
ViewBag.currentsort = sortby;
int pageSize = 1;
int pageNumber = (page ?? 1);
return View("OpsiumNews", NewsModels.ToPagedList(pageNumber, pageSize));
}
//View
@model PagedList.IPagedList<Opsium_website.Models.NewsModels>
@using PagedList.Mvc;
<link href="~/Content/PagedList.css" rel="stylesheet" type="text/css" />
<div class="Sub-content" id="containcontent">
<div class="rightSideHeader">
<div class="container">
<div class="row">
<div class="col-md-15 addBottomMargin">
@using (Html.BeginForm("OpsiumNews", "UsefulInformation", FormMethod.Get))
{
foreach (var item in Model)
{
<p>
Order by
<select name="sortby" id="sortby" onchange="submit();">
<option value="1" @ViewBag.MostRecent>Most Recent</option>
<option value="2" @ViewBag.Oldest>Oldest</option>
<option value="3" @ViewBag.PostedBy>Posted by</option>
</select>
</p>
<div class="col-md-9 addBottomMargin" id="contentText">
<h3>@Html.DisplayFor(model => item.newsTitle)</h3>
<img src="~/Images/NewsImages/@Html.DisplayFor(model => item.imagePath)" alt="@Html.DisplayFor(model => item.newsTitle)" id="newsImage"/>
@MvcHtmlString.Create(item.newsDesc)
<p><b>Date Added:</b>@String.Format("{0:F}", item.dateAdded) - <b>Added By:</b> @Html.DisplayFor(model => item.addedBy)</p>
</div>
}
}
<div class="col-md-2 addBottomMargin" id="contentText">
@{Html.RenderPartial("_NewsTitlesList");}
</div>
<div class="col-md-9 addBottomMargin">
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
@Html.PagedListPager(Model, page => Url.Action("OpsiumNews",
new { page, sortby = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))
</div>
</div>
</div>
</div>
</div>
</div>
//Partial View
@model IEnumerable<Opsium_website.Models.partialNewsMenu>
@using PagedList.Mvc;
@foreach(var items in Model){
@Html.DisplayFor(model=>items.newsTitle)
}
//模型
公共类partialNewsMenu
{
公共IEnumerable新闻标题{get;set;}
}
公共类新闻模型
{
公共int id{get;set;}
公共字符串newsTitle{get;set;}
[allowtml]
公共字符串newsDesc{get;set;}
公共字符串imagePath{get;set;}
由{get;set;}添加的公共字符串
public DateTime dateAdded{get;set;}
public bool publishNewsItem{get;set;}
}
//控制器
public ActionResult OpsiumNews(字符串排序,整数?页)
{
ViewBag.ImageName=“MSLOffice.jpg”;
ViewBag.ImageDesc=“Opsium新闻”;
ViewBag.overlyText=“不适用”;
ViewBag.pageTitle=“Opsium新闻”;
ViewBag.Title=“Opsium | News”;
if(sortby==null)
{
ViewBag.MostRecent=“已选定”;
}
其他的
{
ViewBag.MostRecent=“”;
}
ViewBag.Oldest=“”;
ViewBag.PostedBy=“”;
ViewBag.ListNewsModels=新建SelectList(db.NewsModels,“Id”,“newsTitle”);
var NewsModelsList=db.NewsModels.Select(s=>s.newsTitle);//.Where(s=>s.publishNewsItem);
var NewsModels=db.NewsModels.Where(c=>c.publishNewsItem);
开关(sortby)
{
案例“1”:
NewsModels=NewsModels.OrderBy(s=>s.dateAdded);
ViewBag.MostRecent=“已选定”;
打破
案例“2”:
NewsModels=NewsModels.OrderByDescending(s=>s.DateAdd);
ViewBag.Oldest=“已选定”;
打破
案例“3”:
NewsModels=NewsModels.OrderBy(s=>s.addedBy);
ViewBag.PostedBy=“已选择”;
打破
默认值://Name升序
NewsModels=NewsModels.OrderBy(s=>s.dateAdded);
ViewBag.MostRecent=“已选定”;
打破
}
ViewBag.currentsort=sortby;
int pageSize=1;
整数页码=(第1页);
返回视图(“OpsiumNews”,NewsModels.ToPagedList(pageNumber,pageSize));
}
//看法
@型号PagedList.IPagedList
@使用PagedList.Mvc;
@使用(Html.BeginForm(“OpsiumNews”,“UsefulInformation”,FormMethod.Get))
{
foreach(模型中的var项目)
{
订购人
最近的
最老的
邮寄人
@DisplayFor(model=>item.newsttitle)
item.imagePath)“alt=“@Html.DisplayFor(model=>item.newsttitle)”id=“newsImage”/>
@MvcHtmlString.Create(item.newsDesc)
添加日期:@String.Format(“{0:F}”,item.dateAdded)-添加人:@Html.DisplayFor(model=>item.addedBy)
}
}
@{Html.RenderPartial(“_newTitleList”);}
@Model.PageCount的@页(Model.PageCountUrl.Action(“OpsiumNews”),
新建{page,sortby=ViewBag.CurrentSort,currentFilter=ViewBag.currentFilter})
//局部视图
@模型IEnumerable
@使用PagedList.Mvc;
@foreach(模型中的var项目){
@DisplayFor(model=>items.newsttitle)
}
//错误
传入字典的模型项的类型为“PagedList.PagedList
1[Opsium_网站.模型.新闻模型]”,但此字典需要类型为“System.Collections.Generic.IEnumerable
1[Opsium_网站.模型.partialNewsMenu]的模型项“。您需要共享当前代码、当前输出和预期输出。已添加代码和错误,谢谢