MVC3 Drop Down или ListBox с динамическими флажками - PullRequest
0 голосов
/ 20 марта 2012

У меня есть веб-приложение MVC3 C # .Net. У меня есть требование отображать список флажков (либо в раскрывающемся списке, либо в списке) динамически на основе таблицы в нашей базе данных. Таблица может содержать 1: 500 записей. Затем мне нужно передать выбранные флажки контроллеру, чтобы выполнить действие для каждого выбора. Есть идеи по реализации?

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Есть много способов сделать это, но вот общая демонстрация.

Вы можете передать список значений и описаний флажков в Model (как в этом примере), ViewData[""] в словаре или ViewBag (MVC3 +).

Затем просмотрите их в цикле и добавьте их в форму, используя имя = " chxBxGroupName ", чтобы сгруппировать их.

Теперь создайте действие контроллера для публикации, которое принимает List типа значения (в этом примере int) с именем параметра, совпадающим с именем = " chxBxGroupName ".

Будет опубликован список проверенных значений.

Страница сообщения будет просто распечатана:

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 голосов
/ 20 марта 2012

ответ, предоставленный Джеем, выполняет именно то, что вам нужно. Если вы хотите поместить элементы в список, вы можете сделать это, окружив разметку элементом управления div, лежащим ниже

<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>

к сожалению, вы не можете иметь чекбоксы в <select />, но если вы действительно хотите, чтобы он выглядел как список выбора, вы можете добавить JQuery, который обрабатывает щелчок текстового поля и показывает div. Это, очевидно, потребует некоторого jQuery и может не стоить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...