Флажки привязки модели проблемы к объекту со словарем - PullRequest
3 голосов
/ 25 июля 2011

Я искал SO и не смог найти конкретный ответ на эту проблему.У меня есть модель, в которой есть объект словаря с именем Weekdays, и я хочу сопоставить его с набором полей формы, где ключом является день, а значение - если оно было проверено или нет.

Итак, форма выглядитвот так:

Monday [ ]
Tuesday [ ]
Wednesday [ ]
Thursday [ ]
Friday [ ]

Моя модель выглядит так:

public class Event
{
  [Required(ErrorMessage="All must be checked")]    
  public Dictionary<string,bool> Weekdays { get; set; }
}

Контроллер:

namespace MvcApplication6.Controllers
{
  public class HomeController : Controller
  {
    public ActionResult Index()
    {
      Event e = new Event();

      e.Name = "awesome";

      e.Weekdays = new Dictionary<string, bool>()
      {
        {"Monday", false },
        {"Tuesday", true },
        {"Wednesday", true },
        {"Thursday", false },
        {"Friday", true },
      };     

      return View("Home", e);
    }


    [HttpPost]
    public ActionResult Index(Event e)
    {        
      var x = e.Weekdays["Monday"];     

      return View("Home", e);
    }

  }
}

Мой взгляд:

@model MvcApplication6.Models.Event
@{
  Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<style>.formErrors{color:Red}</style>
  <title>Home</title>
</head>
<body>
  <div>
  @using (@Html.BeginForm("Index", "Home")) 
  {     
    // Weekdays   
    foreach (var i in Model.Weekdays)
    {       
      @i.Key @Html.EditorFor(model => model.Weekdays[i.Key]) <br />    
    }     

    <br /><br /><br />

    <input type="submit" value="submit me" />

  }

  </div>
</body>
</html>

В настоящее время я получаю ошибку во время выполнения цикла foreach: «Ссылка на объект не установлена ​​для экземпляра объекта».

В чем же дело.Благодарю.Кроме того, есть ли лучший способ сделать это вообще?

1 Ответ

1 голос
/ 28 июля 2011

Посмотрите на это сообщение ASP.NET MVC Model Binder не работает со словарем Вы также можете написать свой собственный Model Binder для словаря, вот пример http://siphon9.net/loune/2010/11/dictionary-model-binder-in-asp-net-mvc2-and-mvc3/

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