繁体   English   中英

窗体不使用Asp.Net MVC提交任何值

[英]Form is not Submitting any Value using Asp.Net MVC

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 ActionResult TeacherCourseAssign(int departmentId,int TeacherId,int courseId){

    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);
}

在视图中:

@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>
}

我的部门,课程和教师信息的层叠下拉列表工作正常。 但是当我点击提交时。 它没有提交任何值到我的后控制器SaveTeacherCourseAssign()。 想知道我是否以错误的方式提交了模型?

您完全可以打控制器吗? 默认情况下,所有控制器动作都监听GET请求,因此,如果无法点击它,则必须使用[HttpPost]装饰它才能点击它。

另外,我没有看到针对它的任何ajax请求。 除非是表单,否则如果页面/视图的名称不同,则可能需要在其上显式放置一个动作属性。

如果实际上在提交时碰到一个断点,那您只是得到一个空对象吗?

好了,您拥有form元素,但没有任何action属性。 您必须像这样添加它:

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

我认为这就是您所缺少的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM