模态弹出错误:“参数字典包含非可空类型

时间:2017-03-08 01:03:40

标签: javascript c# jquery ajax asp.net-mvc

我正在尝试进行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">&times;</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);
        }

1 个答案:

答案 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" })