Javascript 模式弹出错误:“参数字典包含不可为空类型的参数“id”的空条目

Javascript 模式弹出错误:“参数字典包含不可为空类型的参数“id”的空条目,javascript,c#,jquery,ajax,asp.net-mvc,Javascript,C#,Jquery,Ajax,Asp.net Mvc,我正在尝试通过模式弹出窗口中的ActionLink调用AJAXGET来查看每个学生的详细信息。弹出窗口显示了,但没有显示模式的主体 在控制台中,我收到这个错误消息 参数字典包含“ContosoUniversity.Controllers.StudentController”中“System.Web.Mvc.ViewResult DetailsInt32”方法的不可为null类型“System.Int32”的参数“id”的null项。可选参数必须是引用类型、可为null的类型或声明为可选参数。 参

我正在尝试通过模式弹出窗口中的ActionLink调用AJAXGET来查看每个学生的详细信息。弹出窗口显示了,但没有显示模式的主体

在控制台中,我收到这个错误消息

参数字典包含“ContosoUniversity.Controllers.StudentController”中“System.Web.Mvc.ViewResult DetailsInt32”方法的不可为null类型“System.Int32”的参数“id”的null项。可选参数必须是引用类型、可为null的类型或声明为可选参数。 参数名称:参数

我对这个错误消息的含义感到困惑

详情行动链接

我的情态

您没有添加名为id的数据属性,而是添加了id属性

生成链接的代码需要

@Html.ActionLink("Details", "Details", null, new { data_id = item.ID, @class = "modalDetails" })
或者,您可以只构建完整的url

@Html.ActionLink("Details", "Details", "Student", new { id = item.ID}, new { @class = "modalDetails" })
然后在脚本中,使用

var url = $(this).attr('href'); // outputs "/Student/Details/2" assuming item.ID = 2;
$.get(url, function (data) {
    ....
});

控制器操作方法需要id参数,但视图代码不提供它。请检查item.id值是否为null。不,不是真的-可能只是$.modalDetails.clickfunction e{e.preventDefault;$.geturl,函数数据{$'.modal body.html$data.find'details';$'myModal.modal'show';};}但有点不清楚为什么返回一个只想使用部分的视图-为什么不返回一个只包含细节位的部分视图?基本步骤应该是1创建一个部分视图,其中包含一个用于编辑学生的表单。2在视图中,使用@Html.partial在视图中呈现它。3在。单击处理程序中,调用一个返回json of t的方法他选择Student并更新相应的表单控件并显示模型。对于提交,处理表单。提交事件,检查。isValid,如果不是取消,则序列化表单并发送到POST方法。主要问题是如何处理ModelState无效,但这本身是一个大问题。@Truecolor,请参阅典型示例E
// GET: /Student/Details/5

        public ViewResult Details(int id)
        {
            Student student = studentRepository.GetStudentByID(id);
            return View(student);
        }
@Html.ActionLink("Details", "Details", null, new { data_id = item.ID, @class = "modalDetails" })
@Html.ActionLink("Details", "Details", "Student", new { id = item.ID}, new { @class = "modalDetails" })
var url = $(this).attr('href'); // outputs "/Student/Details/2" assuming item.ID = 2;
$.get(url, function (data) {
    ....
});