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



所以我想做的是在同一个视图中创建和列表的视图,所以我已经读到,我可以使用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");
        }

我的观点:在每一部分我得到一个错误,说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>

我改变了我的方法,我现在使用局部视图。并创建一个"List"局部视图

Partial View: List

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

在我的"create"视图的末尾我把我的"List"命名为" Partial view "

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

and my controllers:

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);
        }

最新更新