我正在尝试使用下拉列表的更改事件在我的控制器中调用 ActionResult 以填充另一个下拉列表。
这是我尝试过的jQuery:
$(function () {
$('#CertificationId').change(function () {
var data = {
certificationId: $('#CertificationId').val()
};
var certificationId = $('#CertificationId').val();
// $.post('@Url.Action("AjaxGetCourseOptions", "WorkerCertifications")', {certificationId : certificationId}, $(this).parents('form:first').serialize(), function (data) {
// //$('#form').children().remove().append(data);
// }, 'html');
// var url = '@Url.Action("AjaxGetCourseOptions", "WorkerCertifications")';
// var certificationId = $('#CertificationId').val();
// $.post(url, { certificationId: certificationId }, function (result) {
// alert('success');
// });
// $.getJSON('/WorkerCertifications/AjaxGetCourseOptions/SysAdmin/Worker/Certifications/14843/', data, function (result) {
// alert(result.message);
// });
$.getJSON('@Url.Action("AjaxGetCourseOptions", "WorkerCertifications")', data, function (result) {
alert(result.message);
});
// $.getJSON(this.href, data, function (result) {
// alert(result.message);
// });
return false;
});
});
这是来自控制器的代码:
public ActionResult AjaxGetCourseOptions( string certificationId )
{
var viewData = new WorkerCertificationViewModel
{
//CourseOptions = ScheduledCourse.GetActive().ToSelectList(x => x.Id, x => x.Id),
CourseOptions = ScheduledCourse.GetAvailableCourses(Convert.ToInt64(certificationId)).ToSelectList(x => x.Id, x => x.Id)
};
viewModel.CourseOptions = viewData.CourseOptions;
return Json( new {message = "Test"},
JsonRequestBehavior.AllowGet
);
}
我似乎无法让 jQuery 调用控制器中的代码。我怎样才能做到这一点?
更新
我仍然有一个问题让这个工作。这是下拉菜单的更改事件触发之前的页面 URL http://mylocalhost.com/camms/WorkerCertifications/Insert/SysAdmin/Worker/Certifications/14843
更改事件触发后,我有一个硬编码的(暂时)网址,我想发布到该网址,但它已附加到当前网址。知道如何解决这个问题吗?这是它试图发布到的网址: http ://mylocalhost.com/camms/WorkerCertifications/Insert/SysAdmin/Worker/Certifications/camms/WorkerCertifications/AjaxGetCourseOptions/SysAdmin/Worker/Certifications/14843/?certificationId=10916
我必须删除本地主机和端口才能保存此更新。