Как получить выбранное значение флажка в post action в mvc 2 - PullRequest
1 голос
/ 04 августа 2011

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

  public ActionResult Create()
    {
        ITrackdayRepository trackdayResp = new TrackdayRepository();
        IQueryable<Object> getAllEvents = trackdayResp.GetEventsSelectlist();
        var m = new SelectList(getAllEvents,"ID","Name");
        ViewData["events"] = new SelectList(getAllEvents.ToList(), "EventID","Date");
        return View();
    } 

    //
    // POST: /Admin/Voucher/Create

    [HttpPost]
    public ActionResult Create(FormCollection collection)
    {
        try
        {
            // Get all the selected checkboxlist, do db insertion

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

View

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

        <% } %>  
        </td>

Я хочу передать выбранный <% = item.Value%> из списка флажков в пост создания, чтобы я мог сохранить его как 1,2,3,4.

Ответы [ 4 ]

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

Если вы хотите пропустить только выбранные флажки, когда вы публикуете форму, сделайте следующее [как предложено]:

var myAnswers = collection["name"];

, а затем выполните итерацию по нему и сохраните его, или вы можете попробовать этот способ

ASP.Net MVC Список флажков

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

Это очень просто.Используйте FormCollection в списке параметров метода Action в вашем контроллере, а затем создайте String Array для значений CheckBoxBox в вашей модели.

Теперь назначьте значение формы ["Your_CheckBoxBox_value"]. Split (new char [] {','}, StringSplitOptions.RemoveEmptyEntries);

в только что созданный массив строк в вашем контроллере ........

     public ActionResult Create()
{
    ITrackdayRepository trackdayResp = new TrackdayRepository();
    IQueryable<Object> getAllEvents = trackdayResp.GetEventsSelectlist();
    var m = new SelectList(getAllEvents,"ID","Name");
    ViewData["events"] = new SelectList(getAllEvents.ToList(), "EventID","Date");
    return View();
} 

//
// POST: /Admin/Voucher/Create

[HttpPost]
public ActionResult Create(FormCollection collection)
{
    try
    {
        // Get all the selected checkboxlist, do db insertion
        model.CheckBoxValues=collection["Your_CheckBox_valueOnView"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);




        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}
1 голос
/ 04 августа 2011

все сгруппированные флажки возвращаются в виде массива, т.е. 1,4,8 вы просто запрашиваете

var myAnswers = collection["name"];
// split myAnswers here if required

в вашем коде или я что-то здесь упускаю?

0 голосов
/ 23 сентября 2011

Это очень просто, используйте FormCollection в вашем списке параметров метода действия в вашем контроллере, а затем создайте String Array для ваших CheckBoxBox значений в вашей модели.

Теперь назначьте

formvalue["Your_CheckBoxBox_value"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

в только что созданный массив строк в вашем контроллере

public ActionResult Create()
{
    ITrackdayRepository trackdayResp = new TrackdayRepository();
    IQueryable<Object> getAllEvents = trackdayResp.GetEventsSelectlist();
    var m = new SelectList(getAllEvents,"ID","Name");
    ViewData["events"] = new SelectList(getAllEvents.ToList(), "EventID","Date");
    return View();
} 

// POST: /Admin/Voucher/Create

[HttpPost]
public ActionResult Create(FormCollection collection)
{
    try
    {
        // Get all the selected checkboxlist, do db insertion
        model.CheckBoxValues=collection["Your_CheckBox_valueOnView"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}
...