2010-05-14 2 views
3

Html.ListBox에 약간 문제가 있습니다.Html.ListBox() 및 MultiselectList

ASP.NET MVC 1.0에서 개인 블로그를 개발 중이며 게시물을 추가하고 편집 할 수있는 adminpanel을 만들었습니다. 이 두 작업 중에 태그도 추가 할 수 있습니다.

나는 모든 태그를 나열하기 위해 Html.ListBox() 도우미를 사용한다고 생각하므로 게시물에 추가 할 여러 태그를 선택할 수 있습니다! 문제는 추가 모드 중에는 아니지만 편집 모드에서 게시물의 태그를 미리 선택해야합니다.

나는 MultiSelectList을 사용해야하고, 생성자 패스에서는 태그의 목록과 태그의 목록 (사전 선택된 값)을 사용해야한다고 읽었습니다.

하지만이 클래스를 사용하는 방법을 모르겠습니다. 내가 게시

, 일부 코드 :

이것은

public IEnumerable<SelectListItem> GetTagsListBox() 
    { 
      return from t in db.Tags 
        orderby t.IDTag descending 
        select new SelectListItem { 
         Text = t.TagName, 
         Value = t.IDTag.ToString(), 
        }; 
    } 

그래서 편집 (가져 오기 및 포스트)에 selectList의 모든 목록 태그를 얻을 내 모델 방법, 추가 (가져 오기 및 포스트) 내가 사용하는 것입니다 이 목록을 전달할 ViewData는 Html.ListBox()입니다.

ViewData["Tags"] = tagdb.GetTagsListBox(); 

그리고 내보기

<%=Html.ListBox("Tags",ViewData["Tags"] as SelectList) %> 

에서

그래서이 코드로는 추가 모드에서 괜찮습니다.

하지만 편집 모드에서 해당 값을 사전 선택해야합니다.

이제 모든 태그 bypostid를 가져 오는 메소드를 만들어야합니다.

다음으로 ViewData 무엇을 전달해야합니까?

아무 것도 제안하지 않습니까?

답변

0

선택한 태그의 SelectListItemSelected 속성을 true으로 설정하십시오. 당신은 다음을 할 수

+0

예, 그렇지만이 방법으로 모든 태그를 선택했기 때문에 게시물에있는 모든 태그를 미리 선택해야합니다. 예를 들어, 태그가 C# 인 경우 목록 상자에서 mvc를 선택하면이 태그 만 미리 선택되고 다른 모든 태그는 선택되지 않습니다. 느낌표를 유감스럽게 생각합니다. – Ivan90

+0

루프를 사용하여 해당 게시물의 태그에 대해'Selected' 속성을 설정해야합니다. – SLaks

+0

그럼, SelectString을 사용하여 PostID로 태그 목록을 반복하는 루프를 SelectListItem에 추가하고 foreach 항목의 속성을 true로 사용할 수 있습니까? – Ivan90

2

나는 생각한다

public IEnumerable<SelectListItem> GetTagsListBoxWithPostTagsSelected(int postID) 
{ 
    // Assuming you need to create this function and that Tag.IDTag is an int 
    var postTags = GetAllTagsByPostID(postID); 

    return from t in db.Tags   
      orderby t.IDTag descending   
      select new SelectListItem {   
       Text = t.TagName,   
       Value = t.IDTag.ToString(), 
       Selected = postTags.Exists(pt => pt.IDTag == t.IDTag) 
      };   
}   

이 선택한 게시물의 값으로 당신에게 적절한 목록을 반환해야합니다.

GetAllTagsByPostID(postID)을 만들고 PostID을 입력하는 새 방법을 사용하여 태그를 올바르게 선택해야합니다.

변경 없음

는해야 할 것 :

<%=Html.ListBox("Tags", ViewData["Tags"] as SelectList) %> 

ViewData["Tags"] 이제 ListBox 항목을 선택하는 데 필요한 정보를 포함해야합니다.

0

해결 방법 ListBoxFor를 사용하여 다중 선택 목록에서 선택 항목이 발생하는 것을 발견했습니다. 다른 사용자가이 스레드에 게시했습니다. Challenges with selecting values in ListBoxFor

희망이 도움이됩니다.

관련 문제