Захват свойств модели представления после отправки формы - PullRequest
0 голосов
/ 07 сентября 2010

У меня строго типизированное представление, использующее созданную мной модель представления.У меня есть поле даты в моей модели представления, которое является отформатированным отображением свойства моей основной модели.В действии POST Edit (я следовал за руководством к обеду с ботаником) параметры int id, FormCollection collection.Используя свой репозиторий, я ищу модель по идентификатору, и у меня остается захватить мои дополнительные свойства viewmodel, используя FormCollection.Должен быть лучший способ?Может быть, просто измените параметры, чтобы принять мою модель представления вместо int id?Почему ботаник не делает это вместо того, чтобы полагаться на UpdateModel ()?Является ли моя UpdateModel неправильной из-за того, что она не подняла свойства модели представления и не обновила соответственно?

Пример ниже.ValidateInput (false) для моего редактора WYSIWYG

[Authorize(Roles = "Author,Admin"), HttpPost, ValidateInput(false)]
public virtual ActionResult Edit(int id, FormCollection collection)
{
    Spotlight spotlight = spotlightRepository.GetSpotlight(id);

    try
    {
        spotlight.ModifiedDate = DateTimeOffset.Now;
        // I dont like this line
        spotlight.PublishDate = Convert.ToDateTime(collection["PublishDate"]);
        UpdateModel(spotlight, "Spotlight");

        spotlightRepository.Save();

        return RedirectToAction("Details", new { id = spotlight.SpotlightID });
    }
    catch
    {
        ModelState.AddRuleViolations(spotlight.GetRuleViolations());

        return View(new SpotlightFormViewModel(spotlight));
    }
}

1 Ответ

1 голос
/ 07 сентября 2010
public virtual ActionResult Edit(int id, FormCollection collection, Spotlight s)

так что вам вернут ваш объект прожектора.

spotlight.PublishDate = s.PublishDate;

однако, дата и время могут быть проблемой, так как ваша модель имеет DateTime. Я всегда использую FlatSpotlight, где все целые и Datetime являются строками, которые затем можно легко сопоставить с помощью Automapper на объект Spotlight после проверки курса модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...