3

so what Iam trying to do is a view wiht both create and list in the same view, so I've read that I can usea ViewModel for this so I create my view model "EventoViewModel"

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

my controller:

 public ActionResult Create()
        {

            return View();
        }

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

My view: in the foreach part I get an ERROR, say nullreferenceException, what Iam doing wrong?

@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>
Diego_DX
  • 1,051
  • 1
  • 20
  • 33

1 Answers1

2

I change my approach I use partial view now. and create a "List" partial view

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>

and in the end of my "create" view I call my "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);
        }
Diego_DX
  • 1,051
  • 1
  • 20
  • 33