Post方法不适用于MVC中的html表单

时间:2017-11-02 14:29:47

标签: html asp.net-mvc post

为什么$.post()方法不起作用?我按下按钮但它没有发布到EditClassLessonHour

以下是查看代码:

<div class="jumbotron">

    <form id="editClassLessonHour">

        @Html.HiddenFor(model => model.ID)

        <span> Classes &nbsp;: </span>
        <select name="classes" id="classes">
            @foreach (var item in ViewBag.classes as List<SelectListItem>)
            {
                <option value="@item.Value">@item.Text</option>
            }
        </select>
        <br /><br />

        <div class="input-group">
            <span class="input-group-addon" name="lessons" id="lessons">Lessons : </span>
            @Html.DropDownListFor(x => x.LessonName, (IEnumerable<SelectListItem>)ViewData["lesson"], new { @class = "form-control", placeholder = "Lesson", aria_describedby = "txtClassNumber" })
            @Html.ValidationMessageFor(model => model.LessonName)
        </div>
        <br />

        <div class="input-group">
            <span class="input-group-addon" name="hours" id="hours">Hour : </span>
            @Html.DropDownListFor(x => x.Hour, (IEnumerable<SelectListItem>)ViewData["hour"], new { @class = "form-control", placeholder = "Lesson", aria_describedby = "txtClassNumber" })
            @Html.ValidationMessageFor(model => model.Hour)
        </div>
        <br />

        <input type="button" value="Kaydet" id="kaydet" class="btn btn-success" onclick="post(); " />

    </form>
    <br />
</div>

<script>
    $.post('/ClassLessonHour/EditClassLessonHour',{
        classId: $('#classes').val(),
        lessonId: $('#lessons').val(),
        hourId: $('#hours').val()
    }, function (result) {
        $('#message').html(result.message);
    });
</script>

这是控制器代码

[HttpPost]
public ActionResult EditClassLessonHour(int classId, int lessonId, int hourId)
{

}

我该怎么办?我希望当我按下按钮时,表格应该发布到Controller。

1 个答案:

答案 0 :(得分:2)

onclick="post();"

一个名为post的函数。你根本没有任何功能。您只需在页面加载后立即执行AJAX POST请求。

完全删除onclick属性,并将您的AJAX调用绑定到按钮的点击事件。像这样:

$(function () {
    $('#kaydet').on('click', function () {
        $.post('/ClassLessonHour/EditClassLessonHour',{
            classId: $('#classes').val(),
            lessonId: $('#lessons').val(),
            hourId: $('#hours').val()
        }, function (result) {
            $('#message').html(result.message);
        });
    });
});

虽然这里似乎有更多问题。例如,这个:

$('#lessons').val()

id="lessons"元素是<span>,它不会拥有&#34;值&#34;。您希望定位<select>生成的@Html.DropDownListFor,而不是<span>附近的id。在浏览器中检查您的HTML,以查看该服务器端代码生成的内容。它可能有name#hours,您可以在jQuery选择器中使用它。 (同样的问题也适用于您的<head>元素。)