我正在尝试进行AJAX Get
调用,以便从模式弹出框中的ActionLink
查看每个学生的详细信息。弹出窗口显示但它没有显示模态的主体。
在控制台中,我收到此错误消息,
“参数字典包含'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);
}
答案 0 :(得分:1)
您尚未添加名为data-
的{{1}}属性(您刚刚添加了id
属性)。
生成链接的代码需要
id
或者,您可以构建完整的URL
@Html.ActionLink("Details", "Details", null, new { data_id = item.ID, @class = "modalDetails" })
然后在脚本中使用
访问它@Html.ActionLink("Details", "Details", "Student", new { id = item.ID}, new { @class = "modalDetails" })