部分查看并将数据传递给布局MVC3

Rai*_*ght 3 asp.net layout asp.net-mvc-3

我想通过布局和我的方式显示所有页面的类别:这里我的模型(NewsCategoriesModel)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;


namespace GiaoXuKeSat.Models
{
    public class NewsCategoriesModel
    {
        public int NewsCategoriesID { get; set; }
        public string NewsCategoriesName { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

这里是Partialview(_NewsCategories)

@using System.Linq;


@using System.Linq;
@model IEnumerable<GiaoXuKeSat.Models.dms_NewsCategory>

@foreach (var item in Model) {
  <ul id="dmsMenuULUL">
     <li>@item.NewsCategoriesName</li>
</ul>     
}
Run Code Online (Sandbox Code Playgroud)

然后我将部分视图打印到布局

@Html.Partial("_NewsCategories");
Run Code Online (Sandbox Code Playgroud)

但是我没有将Object引用设置为对象的实例.在

@foreach (var item in Model) {
Run Code Online (Sandbox Code Playgroud)

Dan*_*ung 7

您需要将部分视图所需的模型传递给它.如.

@Html.Partial("_NewsCategories", Model.NewsItems);
Run Code Online (Sandbox Code Playgroud)

如果您退出模型,则只需将当前视图模型传递给部分模型.您也可以使用ViewBag.

如果您从主页/布局页面调用Partial,则不太可能在每个页面上都有您的模型.所以在这种情况下,最好创建一个控制器/动作,将您的新闻项模型返回到局部视图,然后用...调用

@Html.Action("NewsCategories", "NewsController");
Run Code Online (Sandbox Code Playgroud)

然后,它将运行指定的操作并显示操作调用的局部视图.