带列表的MVC部分视图

时间:2012-05-16 04:25:57

标签: asp.net-mvc razor asp.net-mvc-partialview

回答

Dbaseman是正确的,但为了简化这一切,我不需要模态,我的代码现在看起来像这样:

[ChildActionOnly]
public ActionResult RecentNews()
{
    return PartialView(db.Articles.ToList());
}

@{Html.RenderAction("RecentNews");}

以下是我的旧代码无效

我无法让下面的人工作,我不确定我是否接近正确的轨道。如果我创建一个View,代码一切正常,但如果我创建一个局部视图并将其添加到其他视图则不行。无论我尝试什么,我似乎得到错误:对象引用未设置为对象的实例。

在我看来,我有:

@Html.Partial("RecentNews")

我的行动如下:

public ActionResult RecentNews()
{
    var rn = (from m in db.Articles
                select new RecentNews
                {
                    ArticleHeading = m.ArticleHeading
                });
    return View(rn);

    //return View(db.Articles.ToList());
}

我的模态:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace melbournesportsstadium.Models
{
    public class RecentNews
    {
        public string ArticleHeading { get; set; }
    }
}

我的RecentNews.cshtml:

@model List<melbournesportsstadium.Models.RecentNews>

<table>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.ArticleHeading)
        </td>
    </tr>
}

</table>

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

你得到“空引用”,因为部分视图没有接收任何模型; @ Html.Partial不会返回控制器,它会直接呈现视图。将其更改为@ Html.Action(“RecentNews”),它应该可以正常工作。