在同一视图MVC3中创建和列出

时间:2011-11-03 20:27:54

标签: asp.net-mvc-3

所以我想要做的是在同一个视图中创建和列表的视图,所以我读过我可以使用ViewModel这样我创建我的视图模型“EventoViewModel”

 public class EventoViewModel
    {
        public Eventos Eventos { get; set; }
        public IEnumerable<Eventos> LEventos { get; set; } 
    }

我的控制员:

 public ActionResult Create()
        {

            return View();
        }

        [HttpPost]
        public ActionResult Create(Eventos eventos)
        {
            if (ModelState.IsValid)
            {
                db.Eventos.AddObject(eventos);
                db.SaveChanges();
            }
            return RedirectToAction("Create");
        }

我的观点:在foreach部分我得到一个ERROR,比如说nullreferenceException,我做错了什么?

@model createList.Models.EventoViewModel

<h2>Create</h2>

@using (Html.BeginForm()) {
    <fieldset>

            <div class="editor-label">
            @Html.LabelFor(model => model.Eventos.Nombre)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Eventos.Nombre)               
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}


<table>
    <tr>
        <th>
            Nombre
        </th>
    </tr>

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

</table>

1 个答案:

答案 0 :(得分:2)

我改变了我的方法我现在使用局部视图。并创建一个“列表”局部视图

部分视图:列表

@model IEnumerable<createList.Models.Eventos>

<table>
    <tr>
        <th>
            Nombre
        </th>
    </tr>

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

在我的“创建”视图结束时,我调用了我的“列表”部分视图

@model createList.Models.Eventos

<h2>Create</h2>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Eventos</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Nombre)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Nombre)
            @Html.ValidationMessageFor(model => model.Nombre)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}
**@{Html.RenderAction("list", "Evento");}** // call de action "list"

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

和我的控制员:

public ViewResult List()
        {
            return View(db.Eventos.ToList()); //past a list of eventos
        }


 public ActionResult Create()
        {
            return View();
        } 

        [HttpPost]
        public ActionResult Create(Eventos eventos)
        {
            if (ModelState.IsValid)
            {
                db.Eventos.AddObject(eventos);
                db.SaveChanges();
                return RedirectToAction("Create");  
            }

            return View(eventos);
        }