Привет У меня есть модель объекта определена в 3 проекта MVC, который имеет свойство словаря следующим образом:ASP.Net MVC 3 Словарь Binding
MyObj.ObjDictionary<string,string>
У меня есть два метода контроллера, один из которых обрабатывает возвращающиеся вид и другой, который обрабатывает публикуемую форму с точки зрения
public ActionResult Scanner(string val_1, string val_2, string val_3)
{
//Fetch sessionObj from Model
MyObj sessionObj = getSessionObj(val_1, val_2, val_3);
//At this point model.ObjDictionary<string,string> contains data
return View(sessionObj);
}
[HttpParamAction]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Scanner(MyObj model)
{
//At this point model.ObjDictionary<string,string> is null
//i.e. binding is not being properly achieved
//Validate POSTed data
}
в представлении я итерацию по каждой пары ключ-значение (КВП). Это нужно сделать так, потому что свойство является динамическим, и я не знаю, сколько значений словаря будет.
@using (Html.BeginForm("Action", "Home"))
{
@foreach (var kvp in Model.ObjDictionary)
{
<span>@Html.Label("Scan " + @kvp.Key)</span>
<span>@Html.TextBox(kvp.Key, "", new { @style = "font-size:Medium;width:400px;" })</span>
}
<input type="submit" name="Cancel" value="Cancel" />
<input type="submit" id="Scanner" name="Scanner" value="Scanner" />
}
Целью является предоставление пользователям возможности вводить данные и привязывать эти данные к значениям конкретного ключа. Моя проблема в том, что Model.ObjDictionary имеет значение null, когда он получает POSTED. Я не уверен, что я делаю неправильно, я читаю статью this, но это предполагает наличие ранее существующих значений в словаре. Есть ли способ, которым ModelBinder может привязывать данные, введенные пользователем, к значению словаря, сопоставленному определенному ключу?