2012-03-20 3 views
0

MVC3 C# .Net 웹 응용 프로그램이 있습니다. 나는 db의 테이블을 기반으로 동적으로 체크 박스 목록 (드롭 다운 또는리스트 박스 중 하나)을 표시해야한다는 요구 사항이 있습니다. 테이블은 1 : 500 항목을 포함 할 수 있습니다. 그런 다음 각 선택 항목에 대한 작업을 수행하기 위해 컨트롤러에 선택된 확인란을 전달해야합니다. 구현에 대한 아이디어가 있습니까?동적 체크 상자가있는 MVC3 드롭 다운 또는 목록 상자

답변

1

여기에 대한 여러 가지 방법이 있지만 여기에 일반적인 데모가 있습니다.

당신은 어느 Model에 체크 박스 값과 설명 목록을 (이 예처럼) 전달할 수 ViewData[""] 사전 또는 ViewBag (MVC3의 +).

그런 다음보기를 반복하여 name = "chxBxGroupName"이라는 그룹을 사용하여 양식에 추가하십시오.

가 이제에 게시 제어부 만들기 작업 이름 = "chxBxGroupName를"일치 매개 변수 명칭으로 (이 예에서 int) 값 유형의 List 걸린다.

확인 된 값의 목록을 게시합니다.

포스트 페이지는 인쇄됩니다

123 
456 

// This is your landing page. It gathers the data to display to the user as checkboxes. 
public ViewResult MyPageWithTheCheckboxes() 
{ 
    // For example: Assume a Dictionary with the checkbox value and description 
    // Replace with DB call, etc. 
    return View(new Dictionary<int, string> { { 123, "Foo" }, { 456, "Bar" } }); 
} 

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<Dictionary<int,string>>" %> 

<!-- Rest of HTML page... --> 

<form id="frm1" action="<%=Url.Action("MyPost")%>" method="post"> 
<% foreach (var item in Model) { %> 
     <input type="checkbox" id="chxBx<%=item.Key%>" name="chxBxGroupName" value="<%=item.Key%>"/> 
     <label for="chxBx<%=item.Key%>"><%=item.Value%></label> 
     <br/><br/> 
<% } %>  
    <input type="submit" value="Go!"/> 
</form> 

<!-- Rest of HTML page... --> 

public ContentResult MyPost(List<int> chxBxGroupName) 
{ 
    return Content(string.Join(Environment.NewLine, chxBxGroupName ?? new List<int>()), "text/plain"); 
} 
+0

@Jay ... 감사합니다. 할 수있는 것처럼 보입니다. 드롭 다운 목록에 체크 박스를 삽입 할 수 있는지 알고 있습니까? – MikeTWebb

+0

@MikeTWebb Sorta, 내가 아는 어떤 것도 내장되어 있지 않습니다. http://code.google.com/p/dropdown-check-list/ 또는 jQuery 플러그인을 사용할 수 있습니다. 또는 자신 만의 솔루션을 사용할 수 있습니다. – Timeout

+0

@Jay ... 감사합니다! 나는 그것을 체크 할 것이다. – MikeTWebb

0

article 당신에게 일을하는 방법의 아이디어를 제공해야하는지 에야디야 너를 원해.

0

제이가 제공 한 답변은 사용자가 필요로하는 것을 정확히 수행합니다. 당신이 목록의 항목을 넣어하려는 경우 당신은 불행하게도 당신이 <select />에 체크 박스가 어차피

<div style="height:40px;overflow:auto;"> 
    <% foreach (var item in Model) { %> 
      <input type="checkbox" id="chxBx<%=item.Key%>" name="chxBxGroupName" value="<%=item.Key% >"/> 
      <label for="chxBx<%=item.Key%>"><%=item.Value%></label> 
      <br/><br/> 
    <% } %> 
</div> 

아래 사업부 제어 거짓말 마크 업을 둘러싼 그것을 할 수 있지만, 당신이 정말로 원한다면 그것은처럼 보이도록 목록을 선택하면 텍스트 상자의 onclick을 처리하고 div를 보여주는 JQuery를 추가 할 수 있습니다. 이것은 분명히 일부 jQuery를 필요로하며 가치가 없을 수도 있습니다.

관련 문제