2012-05-04 4 views
2

기본적으로 아래의 Razor 구문을 사용하여 KeyValuePair와 동일한 것을 렌더링 한 다음 HTML을 생성하는 MVC 뷰가 있습니다.바인딩 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와 및 일반 기능을 사용하여 양식 게시 오전 : 내가 경험하고있는 문제가있다 그러나

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 데이터를 보면 다음과 같은 값만 보일 수 있습니다. 내 모델에 null 컬렉션이있는 이유가 무엇인지 알고 싶습니다. 여기 내 KeyValueViewModel됩니다 - 추가 명확성을 위해

/// <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>(); 
    } 


} 

: :이 높고 낮은 검색 한

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

     public string Value { get; set; } 
    } 

Current Results

다음과 같이

SelectedItems:842 
SelectedItems:326 
SelectedItems:327 

내 모델입니다 ,하지만 그 주제에 아무것도 찾을 수없는 작품, 어떤 도움을 주시면 감사하겠습니다!

고마워,

답변

0

// 나는 당신의 질문을 잘못 읽었다는 것을 깨달았습니다.

당신이 원하는 경우

그래서 //

왜 당신이보기에서 모든 정보를받을 수있는 컨트롤러를 필요합니까 ListBoxFor 사용할 필요가 여러 값을 요 바인드 당신은 아마 이미 그 무언가 경우 백엔드에?

양식에 제출 한 내용 만 신경 써야한다는 것은 의미가 있습니다.

당신이 필요로하는 것은 다시보기를 렌더링하기 위해이 데이터를 다시 채울 경우 (유효성 검사 오류가 있었기 때문에, 여기에 우아한 방식)

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

+0

예 내 백엔드에 그것을 가지고,하지만 난 것이다 돈 이 데이터에 대해 DB를 다시 치고 싶습니다.하지만 양식에 제출 된 항목에만주의해야한다고 동의합니다 ... 그러나 다른 한편으로는 IEnum으로 사용하기 때문에 필요합니다. 항목을 렌더링하여 선택 항목을 편집 할 수 있습니다. 링크를 제공해 주셔서 감사합니다. 다시 읽으시 고 Chuck Norris의 의견을 들어 보겠습니다! –

+0

아직도 기쁨이 없습니다. 문제를 설명하는 데 도움이되는 이미지를 추가했습니다. –