#asp.net-mvc-3
#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 я получаю СООБЩЕНИЕ об ОШИБКЕ, скажем, исключение 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. Итак, в чем вопрос?
2. в части foreach, на мой взгляд, я получаю СООБЩЕНИЕ об ОШИБКЕ, скажем, исключение NullReferenceException, что я делаю не так?
3. Очевидной возможностью является эта модель. LEventos не инициализирован и, следовательно, исключение NullReferenceException
4. да, я хотел знать, где я должен его инициализировать
5. Я даже не вижу в вашем действии, где вы создаете экземпляр модели типа
EventoViewModel
, и я не вижу, где вы передаете его в рассматриваемое представление.
Ответ №1:
Я меняю свой подход, теперь я использую частичный просмотр. и создайте частичное представление «Список»
Частичное представление: список
@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);
}