как получить список флажков для проверки в зависимости от значений БД в MVC - PullRequest
0 голосов
/ 04 августа 2011

У меня есть список проверки на странице редактирования продуктов, я хочу, чтобы список флажков был проверяется в зависимости от значений в БД.

Например, я сохраняю значения в дБ как 1,2,3 Поэтому необходимо проверить список флажков со значением 1, значением 2, значением 3.

Ниже приведен код: Контроллер:

 public ActionResult Edit(int id)
    {
        ITrackdayRepository trackdayResp = new TrackdayRepository();
        IQueryable<Object> getAllproducts = trackdayResp.GetProductsSelectlist();

        ViewData["products"] = new SelectList(getAllproducts.ToList(), "productID", "Name");//all events for checkboxlist
        IVoucherRepository voucherResp = new VoucherRepository();
        Voucher voucher = voucherResp.GetVoucher(id);
        return View(voucher);
    }

    //
    // POST: /Admin/Voucher/Edit/5

    [HttpPost]
    public ActionResult Edit(int id, FormCollection collection)
    {
        try
        {
            // TODO: update the selected checkbox nd do db insert

            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

Вид:

 <tr>
        <td>
        <label>Products</label>
        </td>
        <td>
         <% foreach (var item in (SelectList)ViewData["products"]) { %>
                 <input type="checkbox" name="Name" value="<%=item.Value %>" />
                  <label for="<%=item.Value%>"><%=item.Text%></label>
                  <br />

        <% } %>  
        </td>
        </tr>

изм:

 <td>
         <% foreach (var item in (SelectList)ViewData["events"]) { %>


                     <%var test = ViewData["arrays"];  %>
                    <%string checkString = test.ToString().Contains(item.Value) ? "checked=\"checked\"":string.Empty; %>
                 <input type="checkbox" name="Name" value="<%=item.Value %>" checked="<%=checkString %>" />
                  <label for="<%=item.Value%>"><%=item.Text%></label>
                  <br />

        <% } %>  
        </td>

1 Ответ

1 голос
/ 04 августа 2011

Чтобы установить флажок, вам необходимо установить атрибут флажка на элементе ввода

<input type="checkbox" name="Name" value="<%=item.Value %>" checked="checked" />

РЕДАКТИРОВАТЬ:

Предполагая, что вы всегда хотите 1, 2 или 3 проверить васможет сделать это:

  <% var valuesToCheck = new List<int>() { 1, 2, 3 };

    foreach (var item in (SelectList)ViewData["products"]) { 
       string checkedString = valuesToCheck.Contains(item.productID) ? "checked=/"checked/" : string.empty;
    %>
     <input type="checkbox" name="Name" value="<%=item.Value %>" <%=checkedString%> />
     <label for="<%=item.Value%>"><%=item.Text%></label>
     <br />

<% } %>  

Я бы, вероятно, передал значения, которые вы хотите проверить, как часть вашей модели представления или если вы не используете одно в ViewData, чтобы не определять список в представлении.

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