为什么$.post()
方法不起作用?我按下按钮但它没有发布到EditClassLessonHour
。
以下是查看代码:
<div class="jumbotron">
<form id="editClassLessonHour">
@Html.HiddenFor(model => model.ID)
<span> Classes : </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。
答案 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>
元素。)