Я редактирую Обед (из учебника NerdDinner) и сохраняю его, но Страна не сохраняется. Вот мой код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace NerdDinner.Models
{
public class DinnerFormViewModel
{
private static string[] _countries = new[]{
"USA",
"Bolivia",
"Canada"
};
public Dinner Dinner { get; private set; }
public SelectList Countries { get; private set; }
public DinnerFormViewModel(Dinner dinner)
{
Dinner = dinner;
Countries = new SelectList(_countries, dinner.Country);
}
}
}
Тогда в моем контроллере я использую его так:
[HttpGet]
public ActionResult Edit(int id)
{
Dinner dinner = dinnerRepository.GetDinner(id);
return View(new DinnerFormViewModel(dinner));
}
[HttpPost]
public ActionResult Edit(int id, FormCollection formValues)
{
Dinner dinner = dinnerRepository.GetDinner(id);
if (TryUpdateModel(dinner))
{
dinnerRepository.Save();
return RedirectToAction("Details", new { id = dinner.DinnerID });
}
return View(new DinnerFormViewModel(dinner));
}
Тогда вот вид:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<NerdDinner.Models.DinnerFormViewModel>" %>
<div class="editor-label">
<%: Html.LabelFor(model => model.Dinner.Country) %>
</div>
<div class="editor-field">
<%: Html.DropDownListFor(model => model.Dinner.Country, Model.Countries) %>
<%: Html.ValidationMessageFor(model => model.Dinner.Country) %>
</div>
При попытке отредактировать существующий ужин и изменить Страну, изменение не сохраняется. Спасибо!