2016-06-14 12 views
0

Я пытаюсь сохранить состояние флажка, как только пользователь щелкнет, как он должен отразить в базе данных.MVC - сохранить состояние html helper checkbox, как только он будет нажат или сохранить его одним нажатием кнопки

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

    <table id="table_id" class="display"> 
     <thead> 
      <tr> 
       <th> 
        ID 
       </th> 
       <th> 
        Category ID 
       </th> 
       <th> 
        Category Type 
       </th> 
       <th> 
        Reported By 
       </th> 
       <th> 
        Actioned 
       </th> 
       @*<th> 
         Edit 
        </th>*@ 
      </tr> 
     </thead> 
     @foreach (var item in Model) 
     { 
      <tbody> 
       <tr> 
        <td> 
         @Html.DisplayFor(modelItem => item.ID) 
        </td> 
        <td> 
         @Html.DisplayFor(modelItem => item.CategoryID) 
        </td> 
        <td> 
         @Html.DisplayFor(modelItem => item.CategoryType) 
        </td> 
        <td> 
         @Html.DisplayFor(modelItem => item.ReportedBy) 
        </td> 
        <td> 
         @Html.CheckBoxFor(model => item.Actioned) 
        </td> 
       </tr> 
      </tbody> 
     } 
    </table> 

    <input type="submit" value="Save" class="btn btn-default" /> 

} 

Snap of the output screen Здесь @ Html.CheckBoxFor (модель => item.Actioned)

Срабатывает поле в базе данных типа бит.

Так я пытаюсь либо, 1. состояние флажка должно быть отражены в базе данных, как только она нажата или еще 2. пользователь должен нажать кнопку Сохранить, чтобы сохранить все состояние флажка в целом в зависимости от того изменяется.

Пожалуйста, дайте мне знать, если вам нужны какие-либо другие детали для понимания.

+1

Для того, чтобы упорно ничего базы данных, вам нужно сделать запрос на сервер. В идеале, если вы это сделаете, когда значение определенного элемента изменится, вы сделаете это с помощью запроса AJAX. Хотя для нажатия кнопки «сохранить» нормальный почтовый ящик был бы неплохим. Что вы пробовали? – David

+0

В качестве побочного примечания вы используете '@ Html.CheckBoxFor()' внутри цикла foreach' не будет работать - обратитесь [этот ответ] (http://stackoverflow.com/questions/30094047/html-table-to -ado-net-datatable/30094943 # 30094943) –

+0

Спасибо @ Давид за руководство. Я попробовал вызов AJAX, с которым он работал сейчас. Я видел пару статей из аналогичного сообщения [здесь] (http://stackoverflow.com/questions/10687538/mvc-pass-value-to-controller-via-js). Эта статья действительно помогла мне – user3201573

ответ

-2
function ChangeStatus(CheckedReportedSpamID) { 
    $.ajax({ 
     url: "/ReportedSpam/UpdateCheckedStatus/", 
     type: 'POST', 
     data: { ReportedSpamID: CheckedReportedSpamID } 
    }); 
} 

Поскольку я новичок в MVC использовали HTML тега привязки (он может быть выполнен с использованием HTML помощника тоже)

<input type="checkbox" id="chkActioned" onclick="ChangeStatus('@row.ItemArray[0]')" /> 

Controller.cs

[HttpPost] 
    public ActionResult UpdateCheckedStatus(string ReportedSpamID) 
    { // use the ID which is passed and do something like Actioned = !Actioned; }