2012-05-16 3 views
2

AnsweredMVC Частичный вид со списком

Dbaseman было правильным но упростить все это, я не нуждаюсь в режимные и мой код будет выглядеть так:

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

и

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

Ниже мой старый код, который не работал

У меня возникли проблемы с работой над следующим: я не уверен, что я даже близко к тому, чтобы быть на правильном пути или нет. Код работает отлично, если я создаю представление, но не создаю частичный вид и добавлю его в другие представления. Независимо от того, что я пытаюсь, я, кажется, получаю ошибку: ссылка на объект не установлена ​​в экземпляр объекта.

На мой взгляд, у меня есть:

@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> 

Может кто-нибудь, пожалуйста, помогите мне получить эту работу?

ответ

2

Вы получаете «нулевую ссылку», потому что частичный вид не получает никакой модели; @ Html.Partial не возвращается к контроллеру, он отображает представление напрямую. Измените его на @ Html.Action («RecentNews»), и он должен работать.

+0

Спасибо dbaseman, я попробовал это, и это вроде как работы, но по какой-то причине он вытягивает частичный вид в виде полного вида с помощью _layout. вы знаете, почему это было бы ??? – Bojangles

+0

@Bojangles Hm. Единственные места, где я знаю, где можно установить макет: 1) в самом представлении, 2) web.config в пути представления или родительском пути – McGarnagle

+0

@Bojangles Извините, я хотел написать ** _ ViewStart.cshtml **. У вас есть один из тех, кто в вашем проекте? Возможно, был установлен макет по умолчанию ... – McGarnagle

Смежные вопросы