-1

传入字典的模型项的类型为“System.Collections.Generic.List`1[MvcApplication1.Models.News]”,但此字典需要“MvcApplication1.Models.News”类型的模型项。

   //my Controller
public class HomeController : Controller
{
     CouncilDb _db=new CouncilDb() ;

    public ActionResult Index()
    {

        var News = _db.News
                 .Take(10);


        var Banner = (from r in _db.Banner orderby r.id descending select r).FirstOrDefault();


        maz  model = new maz();
        model.Banner = Banner;
        model.News = News.ToList();

        return View(model);

    }


    protected override void Dispose(bool disposing)
    {
        if (_db != null)
        {
            _db.Dispose();
        }
        base.Dispose(disposing);
    }
}

    public class maz
    {
        public List<News>   News { get; set; }

        public Banner Banner { get; set; }
    }

//索引视图

@model MvcApplication1.Controllers.maz 

@{ 
ViewBag.Title = "Home Page";
}

<!-- Banner -->


 <!-- Banner -->
        <div id="banner">
            <h2> @Model.Banner.H2</h2>
            <span class="byline">  @Model.Banner.Span  </span>
        </div>


@Html.Partial("_News",Model.News    )

//部分视图

 @model MvcApplication1.Models.News

<!-- Carousel -->
<div class="carousel">
    <div class="reel">

        <article>
            <a class="image featured">
                <img src="@Model.ImgUrl  " alt="" /></a>
            <header>
                <h3>@Html.ActionLink(@Model.Title , "serch", "Home")</h3>
            </header>
            <p>@Model.Body </p>
        </article>

    </div>
</div>
4

2 回答 2

0

您的模型的.News属性List<News>不是类型News,因此您的局部视图中的模型声明与您传递给它的模型不匹配。

根据您想要实现的目标,您可以在索引视图中循环遍历列表:

@foreach (var news in Model.News)
{
    @Html.Partial("_News", news)
}

或调整局部视图模型声明并在那里循环

@model List<News>
....
@for (var news in Model)
{
<article>
    <a class="image featured">
        <img src="@news.ImgUrl" alt="" /></a>
    <header>
        <h3>@Html.ActionLink(@news.Title , "serch", "Home")</h3>
    </header>
    <p>@news.Body</p>
</article>
}
于 2013-09-17T00:58:25.103 回答
0

一旦你超越了通用语法,这个错误就很简单了。在 C#-speak 中是这样说的:

The model item passed into the dictionary is of type 'List<News>',
but this dictionary requires a model item of type 'News'.

您的局部视图是用一个@model指定类型项目的子句声明的News

@model MvcApplication1.Models.News

但是当您将数据传递到该局部视图时,您传入的是List<News>

@Html.Partial("_News",Model.News)

您可能想要的是一个循环(a@foreach或类似的),它为列表中的每个元素创建一个局部视图News

于 2013-09-17T00:54:21.400 回答