Как сохранить выбранный идентификатор флажка в базе данных в MVC
Я не могу сохранить отмеченный идентификатор флажка в базе данных. Класс модели-это
public partial class Mapping { public int Id { get; set; } public Nullable<int> DistrictId { get; set; } public Nullable<int> PostId { get; set; } public List<string> GetAllSelctedCheckBoxes { get; set; } }кроме
public List<string> GetAllSelctedCheckBoxes { get; set; }все остальные поля привязываются к базе данных.
просмотр страницы есть
<div class="form-group"> @Html.Label("District", htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.DropDownList("DistrictId", ViewBag.DistrictId as SelectList, "-- Please Select --", new { style = "width:250px" }) </div> </div>
<div class="form-group"> @Html.LabelFor(model => model.PostId,"PostName", htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> <div id="PostMaster"></div> @Html.HiddenFor(m => m.GetAllSelctedCheckBoxes) @Html.ValidationMessageFor(model => model.PostId, "", new { @class = "text-danger" }) </div> </div>
<div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" value="Create" class="btn btn-default" id="Create"/> </div> </div> </div>
<script type="text/javascript"> $(document).ready(function () { //District Dropdown Selectedchange event $("#DistrictId").change(function () { $("#PostMaster").empty(); $.ajax({ type: 'POST', url: '@Url.Action("GetPosts")', // Calling json method dataType: 'json', data: { id: $("#DistrictId").val() }, // Get Selected post id. success: function (posts) { $.each(posts, function (i, post) { $("#PostMaster").append('<input type="checkbox" name="postdata" value=' + post.Text + '>' + post.Text + '<br>'); }); }, error: function (ex) { alert('Failed to retrieve post.' + ex); } }); return false; }) }); </script> <script> $("#Create").click(function () { $('#GetAllSelctedCheckBoxes').empty(); debugger; var getList = []; $("#PostMaster input:checked").each(function () { getList.push($(this).val()); var form = ($(this).val()); }); $('#GetAllSelctedCheckBoxes').val(getList);// assign to hidden field }); </script>
это моя страница просмотра, здесь я могу установить флажок, и выбранный флажок отображается в
GetAllSelctedCheckBoxesи это переход к параметру httpPost контроллера.
[HttpPost] [ValidateAntiForgeryToken] public async Task<ActionResult> Create(Mapping mapping) { if (ModelState.IsValid) { db.Mappings.Add(mapping); await db.SaveChangesAsync(); return RedirectToAction("Index"); } return View(mapping); }
но я не могу сохранить выбранное значение в БД . может ли sombody, пожалуйста, помочь мне получить решение, что выбранный элемент будет отображаться как строка, и мне нужно сохранить его как interger.
Что я уже пробовал:
Я пробовал много раз и не могу найти правильное решение для моей проблемы
Karthik_Mahalingam
post метод действия для GetPosts
ammu11
GetPost используется для передачи части jquery, которую я показал в своем вопросе
Karthik_Mahalingam
метод c#
ammu11
public JsonResult GetPosts(string id)
{
List & lt;selectlistitem> posts = новый список & lt;selectlistitem>();
var postList = это.Getpost(Конвертировать.ToInt32 (id));
Видовая сумка.Postdata= это.Getpost(Конвертировать.ToInt32 (id));
var postData = postList. Select(m => new SelectListItem()
{
Текст = м.PostName,
Значение = м.ИД.Метод toString(),
});
return Json(postData, JsonRequestBehavior.AllowGet);
}
public IList< postmaster & gt; Getpost(int DistrictId)
{
возвращение дБ.Почтмейстеры.Где (m => m. DistrictID = = DistrictId).Список();
}
Karthik_Mahalingam
так и должно быть
$("#PostMaster").append('<input type="checkbox" name="postdata" value=' + post.Value + '>' + post.Text + '<br>');
ammu11
Я получил это, но моя проблема в том, как я могу сохранить отмеченный идентификатор флажка в таблице
Karthik_Mahalingam
но это свойство похоже на список строк
public List<string> GetAllSelctedCheckBoxes { get; set; }
вы сохраняете его как разделенный запятыми?
ammu11
да, когда я изменяю List & lt;string> На List< int>, Он принимает только одно значение выбранного флажка и выдает ошибку, которую он не может неявно преобразовать из List< int> В int? Как я могу изменить это на множественный выбор ?
Karthik_Mahalingam
как это обрабатывается в БД?
ammu11
либо по отдельному списку, либо в отдельной строке
Karthik_Mahalingam
сделайте свойство модели строкой и передайте его как csv из представления в контроллер.
ammu11
что такое csv ?
Karthik_Mahalingam
значение, разделенное запятыми
ammu11
но как я могу это дать ?
Karthik_Mahalingam
$('#GetAllSelctedCheckBoxes').val(getList.join(','));
ammu11
могу я задать вам 1 вопрос ?
как преобразовать List< int> В int? ??
Karthik_Mahalingam
преобразование не возможно
ammu11
Я получаю результат как List< int> Так как же я могу сохранить его в базе данных как int ?
Karthik_Mahalingam
перестроить таблицу, чтобы хранить идентификаторы в виде CSV-строку или создать еще одну таблицу для хранения идентификатора