Как разместить HTML-данные в контроллере при нажатии кнопки ?
я столкнулся с проблемой получения данных из html view classAttandanceList в контроллер
когда я нажимаю на флажок он не работает должным образом как получить get true false когда я проверяю его
Что я уже пробовал:
Цитата:мой код приведен ниже
Модельpublic partial class Tab_Attendance { [Key] public int Attendance_Id { get; set; } public DateTime? Atten_Date { get; set; } public int? Class_Id { get; set; } public int? Student_Id { get; set; } public int? Section_Id { get; set; } public int? Teacher_Id { get; set; } public string Atten_Status { get; set; } } //public class MustBeTrueAttribute : ValidationAttribute //{ // public override bool IsValid(object value) // { // return value is bool && (bool)value; // } //} public class ClassAttendanceList { public bool CheckStatus { get; set; } //public bool Selected { get; set; } public int? Class_Id { get; set; } public string Name { get; set; } public string ClassName { get; set; } public string SecName { get; set; } public int? SecId { get; set; } public int studid { get; set; } } }
----Вид---@model IEnumerable<Faheem.Models.ClassAttendanceList> @{ ViewBag.Title = "ClassAttendance"; } <<h1 class="page-header"> Student Attendance</h1> <!-- end page-header --> <!-- begin row --> <div class="row"> <div class="col-md-8 ui-sortable"> <!-- begin panel --> <div class="panel panel-inverse" data-sortable-id="form-stuff-1"> <div class="panel-heading"> <div class="panel-heading-btn"> <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-default" data-click="panel-expand"><i class="fa fa-expand"></i></a> <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-success" data-click="panel-reload"><i class="fa fa-repeat"></i></a> <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-warning" data-click="panel-collapse"><i class="fa fa-minus"></i></a> <a href="javascript:;" class="btn btn-xs btn-icon btn-circle btn-danger" data-click="panel-remove"><i class="fa fa-times"></i></a> </div> <h4 class="panel-title">Creat Class Attendance</h4> </div> <div class="panel-body"> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-horizontal"> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.Label("Slect Class", new { @class = "col-sm-4 control-label bold" }) <div class="col-md-8"> @*@Html.EditorFor(model => model.Campus_Id, new { htmlAttributes = new { @class = "form-control" } })*@ @Html.DropDownList("Class_Id", null, htmlAttributes: new { @class = "form-control" }) </div> </div> <br /> <div class="row"> <div class="col-md-12"> <table id="tblattendance" class="table table-striped table-bordered dataTable no-footer dtr-inline"> <thead> <tr role="row"> <th> @*<input type="checkbox" data-group-cls="btn-group-justified" checked class="checkbox" value="true" name="chej">*@ </th> <th class="productth">Name</th> <th class="productth">ClassName</th> <th class="productth">SecName</th> </tr> </thead> <tbody> @*<tr> <td> <input type="checkbox" data-group-cls="btn-group-justified" checked class="checkbox" value="true" name="CheckStatus"> <input type="hidden" value="false" name="CheckStatus" /> </td> </tr>*@ @*@if (Model != null) { foreach (var item in Model.Item2) { <tr> <td> @Html.DisplayFor(modelItem => item.Class_Id) </td> <td> @Html.DisplayFor(modelItem => ite) </td> </tr> } }*@ </tbody> </table> </div> </div> <div class="form-group"> <div class="col-md-8 col-md-offset-4"> <input type="submit" value="Save" class="btn btn-success m-r-5 m-b-5" /> <a href="/Attendance/ClassAttedance" class="btn btn-default m-r-5 m-b-5"> Cancel </a> </div> </div> </div> } </div> </div> </div> </div> <script> $(document).ready(function () { $("#Class_Id").change(function () { $("#tblattendance tbody tr").remove(); $.ajax({ //url: '/Attendance/ClassAttendance', // type: "GET", // dataType: "JSON", type: 'GET', url: '@Url.Action("GetClass")', dataType: 'json', data: { Classid: $("#Class_Id").val() }, success: function (data) { var items = ''; $.each(data, function (i, item) { var rows ="<tr>" + "<td> <input id='" + item.CheckStatus + "' name='CheckStatus' data-group-cls='btn-group-justified' checked='checked' class='checkbox' value='true' type='checkbox' /></td>" + "<td class='prtoducttd'>" + item.Name + "</td>" + "<td class='prtoducttd'>" + item.ClassName + "</td>" + "<td class='prtoducttd'>" + item.SecName + "</td>" + "</tr>"; $('#tblattendance tbody').append(rows); }); }, error: function (ex) { var r = jQuery.parseJSON(response.responseText); alert("Message: " + r.Message); alert("StackTrace: " + r.StackTrace); alert("ExceptionType: " + r.ExceptionType); } }); return false; }) }); </script> @*<script> $('.btn-success').on("click", function () { var tr = $(this).parents('tr:first'); var id = tr.find("#Class_Id").val(); var name = tr.find(".Name").val(); var clasname = tr.find(".ClassName").val(); var isSuccess = -1; var LIST = { "Class_Id": id, "Name": name, "ClassName": clasname }; $.ajax({ // HomeController and InsertData method url: '/Attendance/insertdata/', data: JSON.stringify(LIST), type: 'POST', contentType: 'application/json; charset=utf-8', success: function (result) { isSuccess = result; }, error: function (result) { isSuccess = result; } }).done(function () { if (isSuccess == "1") { // Successfully saved tr.find('.edit, .display').toggle(); alert("Successfully Saved"); location.reload(); // refresh the page } else { // Data Error alert("Error. Please, check the data"); } }); }); </script>*@ @*<script src="js/jquery-1.11.0.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { PrepareCheckbox(); }); function PrepareCheckbox(){ document.getElementById("checkbox").CheckStatus = true; } </script>*@
--Cotroller для того---using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Faheem.Models; namespace Faheem.Controllers { public class AttendanceController : Controller { // GET: Attendance SIMSModel Sims = new SIMSModel(); public ActionResult ClassAttendance() { ViewBag.Class_Id = new SelectList(Sims.Tab_Class.ToList(), "Class_Id", "ClassName"); //ViewBag.Checkbox_Id = new SelectList(Enumerable.Empty<SelectListItem>()); //if (Session["Tab_Attendance"] != null) //{ // var t1 = new Tuple<IEnumerable<ClassAttendanceList>, Tab_Attendance>((IEnumerable<ClassAttendanceList>)Session["Tab_Attendance"], null); // return View(t1); //} return View(); } public ActionResult GetClass(int Classid = 0) { if (Classid == 0) { RedirectToAction("Index"); } Session["Class_id"] = Classid; String Query = "EXEC SP_ClassAttendanceList " + Classid; var ClassAttendancelist = Sims.Database.SqlQuery<ClassAttendanceList>(Query); return Json(ClassAttendancelist, JsonRequestBehavior.AllowGet); } //[HttpPost] //public JsonResult InsertData(ClassAttendanceList inStudent) //{ // String result = String.Empty; // // var Student = new SelectList(Sims.Tab_Student.Where(m => m.Class_Id == Class).ToList() // // var a=new SelectList(Sims.cl).Where(m=>m) // // Models.ClassAttendanceList dup = ClassAttendanceList.Find(p =>p == inStudent.ID); // String Query = " EXEC SP_ClassAttendanceList " + inStudent.Class_Id; // var ClassAttendancelist = Sims.Database.SqlQuery<ClassAttendanceList>(Query); // foreach (var item in ClassAttendancelist) // { // item.ClassName = inStudent.ClassName; // } // //if (dup == null) // //{ // // ClassAttendanceList.Add(inStudent); // // result = "1"; // //} // //else // //{ // // result = "0"; // //} // return Json(result, JsonRequestBehavior.AllowGet); //} [HttpPost] public ActionResult ClassAttendance([Bind(Include = "Attendance_Id,Atten_Date,Class_Id,Student_Id,Section_Id,Teacher_Id,Atten_Status")] Tab_Attendance at , ClassAttendanceList clist ) { // model.CheckStatus = true; String Query = " EXEC SP_ClassAttendanceList " + Session["Class_id"]; var list = Sims.Database.SqlQuery<ClassAttendanceList>(Query); foreach (var item in list) { at.Class_Id = int.Parse(item.Class_Id.ToString()); at.Student_Id = int.Parse(item.studid.ToString()); at.Section_Id = int.Parse(item.SecId.ToString()); // at.Atten_Status = "P"; using (var context = new SIMSModel()) { // bool CheckStatus = Convert.ToBoolean(coll["CheckStatus"]); if (clist.CheckStatus == true) { string Query1 = "EXEC SP_AttendanceInsertUpdate " + at.Class_Id + "," + at.Student_Id + "," + at.Section_Id + "," + "'" + "P" + "'"; context.Database.ExecuteSqlCommand(Query1); } else { string Query1 = "EXEC SP_AttendanceInsertUpdate " + at.Class_Id + "," + at.Student_Id + "," + at.Section_Id + "," + "'" + "A" + "'"; context.Database.ExecuteSqlCommand(Query1); } } } return View(); } } }<pre>
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]
Tahir Mahmood From karachi
хорошо спасибо Ричард я не буду использовать это потому что я новичок в MVC вот почему я получаю ошибку но пожалуйста посмотрите на мою проблему
Karthik_Mahalingam
Всегда использовать Ответить кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.
Tahir Mahmood From karachi
будьте добры, уточните.
где я получаю ошибку, потому что я хочу получить html-данные, которые я показал с помощью json ajax