2016-05-07 6 views
0
In Model: 


public int TeacherCourseAssignId { set; get; } 
    public int TeacherID { set; get; } 
    public decimal TeacherRemainingCredit { set; get; } 
    public int CourseId { set; get; } 
    public string CourseName { set; get; } 
    public decimal CourseCredit { set; get; } 


In controller: 

[Httppost] public Action TeacherCourseAssign (int DepartmentID, int teacherId, int courseId) {Formular einreicht keinen Wert unter Verwendung von Asp.Net MVC

ViewBag.Departments = GetDepartments(); 
    return View(); 
} 
public ActionResult SaveTeacherCourseAssign(TeacherCourseAssign teacherCourseAssign) 
{ 

    ViewBag.Departments = GetDepartments(); 
    ViewBag.Message = teacherCourseAssignManager.Save(teacherCourseAssign); 
    ModelState.Clear(); 
    return View(); 
} 
public JsonResult SaveTeacheCourseAssign(TeacherCourseAssign teacherCourseAssign) 
{ 
    //Code 
    return Json(true, JsonRequestBehavior.AllowGet); 
} 

public JsonResult GetTeachersByDepartmentId(int deptId) 
{ 
    var teachers = GetTeacher(); 
    var teacherList = teachers.Where(a => a.DepartmentId == deptId).ToList(); 

    return Json(teacherList, JsonRequestBehavior.AllowGet); 
} 

public JsonResult GetCoursesByDepartmentId(int deptId) 
{ 
    var courses = GetCourses(); 
    var courseList = courses.Where(a => a.DepartmentId == deptId).ToList(); 
    return Json(courseList, JsonRequestBehavior.AllowGet); 
} 

public JsonResult GetTeachersInfoByTeacherId(int teacherId) 
{ 
    var teachers = GetTeacher(); 
    var teacherInfo = teachers.Where(t => t.TeacherID == teacherId).ToList(); 

    return Json(teacherInfo, JsonRequestBehavior.AllowGet); 
} 
public JsonResult GetCoursesInfoByCourseId(int courseId) 
{ 
    var courses = GetCourses(); 
    var courseList = courses.Where(c => c.CourseId == courseId).ToList(); 
    return Json(courseList, JsonRequestBehavior.AllowGet); 
} 

In Aussicht:

@model Last.Models.TeacherCourseAssign 


@{ 
    ViewBag.Title = "Teacher Course Assign"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>Teacher Course Assign</h2> 

<form method="POST" id="myForm"> 
    <table> 
     <tr> 
      <td> 
       <label for="departmentId">Select Department</label> 
      </td> 
      <td> 
       <select name="departmentId" id="departmentId"> 
        <option value="">Select...</option> 
        @foreach (var department in ViewBag.Departments) 
        { 
         <option value="@department.DeptId">@department.DeptName</option> 
        } 
       </select> 
      </td> 
     </tr> 

     <tr> 
      <td><label for="teacherId">Teacher</label></td> 
      <td> 
       <select name="teacherId" id="teacherId"></select> 
      </td> 
     </tr> 

     <tr> 
      <td>@Html.LabelFor(m => m.CreditToBeTaken)</td> 
      <td>@Html.TextBoxFor(m => m.CreditToBeTaken)</td> 
     </tr> 

     <tr> 
      <td>@Html.LabelFor(r => r.TeacherRemainingCredit)</td> 
      <td> 
       @Html.TextBoxFor(r => r.TeacherRemainingCredit) 

      </td> 
     </tr> 


     <tr> 
      <td><label for="courseId"></label></td> 
      <td> 

       <select name="courseId" id="courseId"></select> 
      </td> 
     </tr> 
     <tr> 
      <td>@Html.LabelFor(n => n.CourseName)</td> 
      <td> 

       @Html.TextBoxFor(n => n.CourseName) 
      </td> 
     </tr> 
     <tr> 
      <td>@Html.LabelFor(c => c.CourseCredit)</td> 
      <td> 
       @Html.TextBoxFor(c => c.CourseCredit) 
       <br> 
      </td> 
     </tr> 




     <tr> 
      <td></td> 
      <td><input type="submit" id="Submit" value="Assign" class="btn btn-default" /></td> 
     </tr> 
    </table> 

</form> 


@section scripts 
{ 
    <script src="~/Scripts/jquery-1.10.2.min.js"></script> 

    <script> 
     $(document).ready(function() { 
      $("#departmentId").change(function() { 


       var dept = $("#departmentId").val(); 
       $("#teacherId").empty(); 
       $("#courseId").empty(); 

       var json = { deptId: dept }; 
       //$("#teacherId").append('<option value="">Select</option>'); 
       $.ajax({ 
        type: "POST", 
        url: '@Url.Action("GetTeachersByDepartmentId", "TeacherCourseAssign")', 
        contentType: "application/json; charset=utf-8", 
        data: JSON.stringify(json), 
        success: function(data) { 
         $("#teacherId").append('<option value="">Select</option>'); 
         $.each(data, function(key, value) { 

          $("#teacherId").append('<option value=' + value.TeacherID + '>' + value.TeacherName + '</option>'); 

         }); 
        } 
       }); 

       // $("#courseId").append('<option value="">Select</option>'); 


       $.ajax({ 
        type: "POST", 
        url: '@Url.Action("GetCoursesByDepartmentId", "TeacherCourseAssign")', 
        contentType: "application/json; charset=utf-8", 
        data: JSON.stringify(json), 
        success: function(data) { 
         $("#courseId").append('<option value="">Select</option>'); 
         $.each(data, function(key, value) { 
          $("#courseId").append('<option value=' + value.CourseId + '>' + value.CourseCode + '</option>'); 
         }); 
        } 
       }); 
      }); 

      $("#teacherId").change(function() { 
       var tech = $("#teacherId").val(); 
       var json = { teacherId: tech }; 
       $.ajax({ 
        type: "POST", 
        url: '@Url.Action("GetTeachersInfoByTeacherId", "TeacherCourseAssign")', 
        contentType: "application/json; charset=utf-8", 
        data: JSON.stringify(json), 
        success: function(data) { 
         $.each(data, function(key, value) { 
          $("#CreditToBeTaken").val(value.CreditToBeTaken); 

          $("#TeacherRemainingCredit").val(value.CreditToBeTaken); 
         }); 
        } 
       }); 
      }); 

      $("#courseId").change(function() { 
       var tech = $("#courseId").val(); 
       var json = { courseId: tech }; 
       $.ajax({ 
        type: "POST", 
        url: '@Url.Action("GetCoursesInfoByCourseId", "TeacherCourseAssign")', 
        contentType: "application/json; charset=utf-8", 
        data: JSON.stringify(json), 
        success: function(data) { 
         $.each(data, function(key, value) { 
          $("#courseName").val(value.CourseName); 
          $("#CourseCredit").val(value.Credit); 

         }); 
        } 
       }); 
      }); 


     }); 
    </script> 
} 

Meine Cascading DropDown für Abteilung, Kurs und Lehrer Info funktioniert gut. aber wenn ich auf submit klicke. Es gibt keinen Wert an meinen Post-Controller SaveTeacherCourseAssign(). möchte ich wissen, dass ich mein Modell falsch abgebe?

+0

Welchen Wert erwarten Sie und was ist nicht verfügbar? – Shyju

+0

als mein Modell möchte ich diese alle Daten an meine Datenbank übergeben. aber da meine Ansicht mit allen Daten geladen wird, die ich ihm übergeben habe. Cascading Ajax Call funktioniert ganz gut. aber wenn ich mit meinen ausgewählten Daten absende, passiert nichts. Es löscht nur meine Textfelder. –

Antwort

0

Können Sie den Controller überhaupt treffen? Standardmäßig hören alle Controller-Aktionen auf GET-Anfragen zu. Wenn Sie sie nicht erreichen können, müssen Sie sie mit [HttpPost] dekorieren, um sie zu treffen.

Auch ich sehe keine Ajax-Anfrage, die darauf abzielt. Es sei denn, es ist das Formular, an dem Sie möglicherweise explizit ein Aktionsattribut einfügen möchten, wenn der Name der Seite/Ansicht nicht derselbe ist.

Wenn Sie beim Senden tatsächlich einen Haltepunkt erreichen, erhalten Sie nur ein Nullobjekt?

+0

Ja meine Get-Anfrage funktioniert ordnungsgemäß. lädt mit allen meinen gewünschten Dropdowns und Werten ... –

+0

Ich spreche über Ihren 'SaveTeacherCourseAssign' Endpunkt. Kannst du es treffen? – napo

+0

nein, es trifft nicht diesen Teil. –

0

In Ordnung, Sie haben Ihre form Element, aber es hat keine action Eigenschaft. Sie müssen es hinzufügen wie:

<form method="POST" id="myForm" 
action="@Url.Action("your_action_method_name" , "your_controller_name")" > 

Ich denke, das ist, was Sie vermissen.

+0

ausprobiert

, aber keine Änderung .. ich möchte wissen, dass meine Daten nicht ordnungsgemäß für das Model? –

+0

Sie haben die Felder mit Ihrem Aktionsnamen und Controllernamen ersetzt, richtig? Es sollte sein in Ihrem Fall – Qsprec

+0

Ich habe genau das gleiche versucht wie du es getan hast. –

Verwandte Themen