Asp.net MVCを学び始めています。私のページにIEnumerableショーを作成する際に問題があります。Asp.net - MVC - ViewModelでIEnumerableを使用して空のモデルを返します
今、私はViewModelでプロジェクトのリストを渡して、レイアウトページの一部を表示しようとしています。
伝統的なビューでリストを渡すと、それは機能します。 Viewモデルで単一のアイテムを渡すと、それも機能しますが、IENumeratorを渡すと、モデルはnullを返します。 私が答えを探しているのは3日間です。
ここに私のPROJETOモデル
namespace Athena_web.Models
{
public class Projeto
{
public int Id { get; set; }
public String Nome { get; set; }
}
}
はここに私のPROJETOコントローラ
using Athena_web.Models;
using Athena_web.ViewModel;
namespace Athena_web.Controllers
{
public class ProjetosController : Controller
{
// GET: Projetos
public ActionResult ListaProjetos()
{
var projetos = GetProjetos();
var viewModel = new ProjetosControllerViewModel
{
Projetos = projetos
};
return PartialView(viewModel);
}
private IEnumerable<Projeto> GetProjetos()
{
return new List<Projeto>
{
new Projeto() {Id = 1, Nome = "Projeto A"},
new Projeto() {Id = 1, Nome = "Projeto 2"},
new Projeto() {Id = 3, Nome = "Projeto C"}
};
}
}
}
これは私ProjetosControllerViewModel
namespace Athena_web.ViewModel
{
public class ProjetosControllerViewModel
{
public IEnumerable<Projeto> Projetos { get; set; }
}
}
であり、これは私の意見です。
ここで私は
<div class="menuLateral">
<!-- a soma da largura dessa div com a div telaConteudo deve ser de 100%-->
@Html.Partial("~/Views/Projetos/_ListaProjetos.cshtml")
<div class="menuExtras">
<!-- essa parte da separado do menu lateral por questão de posicionamento. Essa parte vai ficar lá embaixo-->
<div class="mensagemUsuario">
<!-- coloca o background dessa div como a imagem mensagem.png, background repeat: no-repeat e background-position left-->
Mensagem
</div>
<div class="downloadUsuario">
<!-- Mesmo esquema de mensagem -->
Download
</div>
</div>
</div>
私の部分ビューをレンダリング私のレイアウトページは、あなたがビューにProjetosControllerViewModelにビューモデルを受け入れなければなら事前
あなたのビューには、 'IEnumerable'が必要です。代わりに 'ProjetosControllerViewModel'のインスタンスを渡しています。それ自体は' IEnumerable'ではありませんが、そのプロパティはです。 'viewModel.Projetos'をビューに渡すか、' ProjetosControllerViewModel'を受け入れ、 'Model.Projetos'を列挙するようにビューを変更してください。 –
GSerg
どのように部分ビューを呼び出していますか? – Shyju
@ Html.Partial( "〜/ Views/Projetos/_ListaProjetos.cshtml") (私はそれが最高ではないことを知っていますが、働いたのはそれだけでした) –