【问题标题】:Asp.net lazy loading related entitiesAsp.net 延迟加载相关实体
【发布时间】:2017-03-02 06:16:12
【问题描述】:

我正在使用 Asp.net vs 2012 我的课程是

public class klasa
{
    [Key]
    public int klasaid { get; set; }
    public string emriklases { get; set; }
    public string vendodhja { get; set; }
    public virtual ICollection<student> students { get; set; }
}
public class student
{
    [Key]
    public int studentid { get; set; }
    public string emristudent { get; set; }
    public int nota { get; set; }
    public int klasaid { get; set; }
    [ForeignKey("klasaid")]
    public klasa Klasa { get; set; }

学生名单控制器

udb _db = new udb();
public ActionResult Index([Bind(Prefix="klsasaid")] int klasaid)
{
    var studentlist = _db.Seuni.Find(klasaid);
    if (studentlist != null)
    {
        return View();
    }
    return HttpNotFound();
}

学生列表查看索引

@model Unilast.Models.klasa
<h2>List for @Model.emriklases </h2>
@Html.Partial("_partial1", @Model.students);
<p>@Html.ActionLink("Create New", "Create")</p>

_partial1 视图如下:

@model IEnumerable<Unilast.Models.student>

<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.emristudent)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.nota)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.klasaid)

延迟加载实体不起作用。

参数字典包含“Unilast.Controllers.StudentListController”中方法“System.Web.Mvc.ActionResult Index(Int32)”的不可为空类型“System.Int32”的参数“klasaid”的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。 参数名称:参数

这是它显示的错误 视图是

【问题讨论】:

  • 您甚至没有显示调用该方法的代码。错误是不言自明的 - 您没有传递 klasaid 的值
  • @StephenMuecke @Html.ActionLink("StudentList", "Index","StudentList", new { id=item.klasaid },null) |这是来自 klasaController 索引的链接
  • 您还没有显示包含调用StudentListControllerIndex() 方法或生成该视图的控制器方法的链接的视图(以及模型的填充方式)
  • 当您访问ActionResult Index([Bind(Prefix="klsasaid")] int klasaid) 时出现错误,因此请显示您的访问代码,从您调用索引方法的位置使用klasaid
  • @StephenMuecke 是的,我拥有的是 StudentList 视图,就在上面的控制器索引下方。但是当他做同样的事情并且工作时,我已经看到了一个复数视图教程。这里:[链接]app.pluralsight.com/…

标签: c# asp.net .net asp.net-mvc entity-framework


【解决方案1】:

像这样修改你的控制器

    public ActionResult Index(int? id)
    {

        if (! id.HasValue || id.Value < 1 )
        {
            return HttpNotFound();
        }

        List<String> studentList = new List<string>();
        var klasa = _db.Keuni.FirstOrDefault(x => x.klasaid == id.Value);
        if (studentList != null)
        {
           return View(klasa);
        }
        else
        {
            return HttpNotFound();
        }
    }

【讨论】:

    【解决方案2】:

    在您的学生班级中,[ForeignKey("klasaid")] 需要放在声明上方。你已经把它放在下面了。

    【讨论】:

    • 我的班级结构没有问题。它工作正常。我不知道为什么我不能显示在该班级注册的学生
    猜你喜欢
    • 2015-09-21
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    相关资源
    最近更新 更多