2012-05-04 1 views
2

У меня есть представление MVC, которое отображает то, что в основном эквивалентно KeyValuePair, используя синтаксис Razor ниже, а затем генерирует следующий HTML.Bind ListBoxFor (несколько) назад к модели

@Html.DropDownListFor(x => x.SelectedItems, new SelectList(Model.SelectedItems, "Key", "Key"), new { Class = "selectList selectedList", size = "2" }) 

HTML:

<select class="selectList selectedList" id="SelectedItems" name="SelectedItems" size="2"> 
    <option value="842">Item 1</option> 
    <option value="326">Item 2</option> 
    <option value="327">Item 3</option> 
</select> 

Я отправляю форму вручную с помощью Jquery и родовой функцию POST наших форм, как показано ниже:

function GenericSubmit(formSelector, sender, callback) { 
    if (typeof (sender) != "undefined" && $(sender).hasClass('disabled')) { 
     return false; 
    } 

    var $that = $(formSelector); 
    var that = $that.get(0); 
    if ($that.valid()) { 
     $.ajax({ 
      url: that.action, 
      type: that.method, 
      data: $(that).serialize(), 
      success: function (data, textStatus, jqXHR) { 
       callback.call(that, data); 
      } 
     }); 
    } 
    return false; 
} 

Однако проблема, которую я испытываю, это что только передаваемые данные являются фактическими значениями (я ожидаю, что это работает JQ ..), но мне нужно привязать к IEnumerable.

От взгляда на данные POST, которые отправляются в форму, я могу видеть только следующие значения, которые отправляются - что я ожидаю, почему моя модель имеет нулевую коллекцию.

SelectedItems:842 
SelectedItems:326 
SelectedItems:327 

Моя модель выглядит следующим образом:

/// <summary> 
/// An response for dealing with list type entities 
/// </summary> 
public class ListEntityResponse : EntityScreenResponse 
{ 
    /// <summary> 
    /// Contains a Enumerable of items that can be selected 
    /// </summary> 
    public List<KeyValueViewModel> AvailableItems { get; set; } 

    /// <summary> 
    /// Contains a Enumerable of items that have been selected 
    /// </summary> 
    public List<KeyValueViewModel> SelectedItems { get; set; } 

    public ListEntityResponse() 
    { 
     AvailableItems = new List<KeyValueViewModel>(); 

     SelectedItems = new List<KeyValueViewModel>(); 
    } 


} 

Для большей ясности - вот мой KeyValueViewModel:

public class KeyValueViewModel 
    { 
     public string Key { get; set; } 

     public string Value { get; set; } 
    } 

Current Results

Я искал высоко и низко для этого , но, похоже, не может найти ничего по этому вопросу, которое будет работать, любая помощь будет оценена!

Спасибо,

ответ

0

// Просто понял, что я неправильно понял ваш вопрос.

Если вы хотите лет связываться с несколькими значениями, которые необходимо использовать ListBoxFor

//

Так почему же вам нужен контроллер получить всю эту информацию с точки зрения, если его что-то, что вы, вероятно, уже есть в вашем бэкэнде?

Имеет смысл только заботиться о вещах, которые вы представили в форме.

Если то, что вам нужно, чтобы заселить эти данные снова делают вид (потому что там были ошибки проверки, вот элегантный подход)

http://www.paulstovell.com/clean-aspnet-mvc-controllers

+0

Да будет это в моем внутреннем интерфейсе, но дон «Я действительно хочу снова попасть в БД для этих данных. Но я согласен, что это должно заботиться только о вещах, представленных в форме ... но, с другой стороны, мне это нужно как IEnum, потому что он будет использоваться для рендеринга элементов, чтобы они могли редактировать их. Спасибо за ссылку - я прочитаю ее и посмотрю, что говорит Чак Норрис! –

+0

По-прежнему нет радости, я боюсь, я добавил изображение, чтобы помочь проиллюстрировать мою проблему –

 Смежные вопросы

  • Нет связанных вопросов^_^