ASP.NET MVC2 UpdateModel не обновляет публичное свойство, включенное в белый список - PullRequest
0 голосов
/ 25 августа 2010

У меня есть класс Foo с полем UpdateMe типа Confirmation, как описано ниже ..

public class Foo
{
  public Confirmation UpdateMe{get;set;}
  public int BarInt{get;set}
}

public enum Confirmation
{
  N = 0,
  Y = 1
}

У меня есть белый список, который имеет UpdateMe и работает следующим образом ...

[AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken]
public ActionResult Update(Foo foo)
{
  if(ModelState.IsValid)
  {
    //this is the Foo as it exists in the backend..using Linq2Sql read/record behavior
    Foo existingFoo = _Service.GetFoo();
    string[] whitelist = { "UpdateMe" };

    UpdateModel(existingFoo, whitelist);

    //do persistence stuff down here...

  }
}

модель привязана очень хорошо, входящий Foo имеет любое значение UpdateMe, которое я установил, однако процедура UpdateModel не обновляет свойство.

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

Есть идеи, почему это конкретное публичное свойство не обновляется?

1 Ответ

0 голосов
/ 25 августа 2010

Хорошо, вот совок.

Проблема в том, что поле было сопоставлено с флажком.Когда флажок не записывался с использованием HtmlHelper, он не распространялся в ModelState и поэтому не включался в UpdateModel.

Когда я переключился на использование HtmlHelper, ModelState включал значение флажка независимо отвыбранный (желательный) ... однако это вернуло уродливость отображения типа перечисления на флажок.

...