【发布时间】:2017-03-08 01:03:39
【问题描述】:
我正在尝试通过模式弹出窗口中的ActionLink 进行 AJAX Get 调用以查看每个学生的详细信息。弹出窗口出现,但不显示模态框的主体。
在控制台中,我收到此错误消息,
“参数字典包含“ContosoUniversity.Controllers”中方法“System.Web.Mvc.ViewResult Details(Int32)”的不可空类型“System.Int32”的参数“id”的空条目。 StudentController'。可选参数必须是引用类型、可空类型或声明为可选参数。 参数名称:参数”
我对这个错误消息的含义感到困惑。
详情 ActionLink
@Html.ActionLink("Details", "Details", null, new { id = item.ID, @class = "modalDetails" })
我的模态
<div class="modal fade" id="myModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<a href="#" class="close" data-dismiss="modal">×</a>
<h3 class="modal-title">Student Details</h3>
</div>
<div class="modal-body">
</div>
<div class="modal-footer">
<a href="#" class="btn btn-default" data-dismiss="modal">Cancel</a>
</div>
</div>
</div>
</div>
AJAX 调用
<script type="text/javascript">
$(function () {
$(".modalDetails").click(function (e) {
e.preventDefault();
var id = $(this).data('id');
//console.log('the id is: ' + id);
var loadModal = function () {
//var deferred = $.Deferred();//create a deffered object
var url = "/Student/Details";
$.get(url, { id: id }, function (data) {
$('.modal-body').html($(data).find('#details'));
});
//return deferred.promise();
};
loadModal();
//loadModal().done(function () {
//console.log("done loading modal!");
$('#myModal').modal('show');// show the modal pop up
// });
});
});
</script>
StudentController
// GET: /Student/Details/5
public ViewResult Details(int id)
{
Student student = studentRepository.GetStudentByID(id);
return View(student);
}
【问题讨论】:
-
控制器操作方法需要
id参数,但视图代码不提供它。检查item.ID值是否为空值。
标签: javascript c# jquery ajax asp.net-mvc