Asp.net mvc asp.net mvc关系数据未传递到视图

Asp.net mvc asp.net mvc关系数据未传递到视图,asp.net-mvc,linq-to-sql,Asp.net Mvc,Linq To Sql,我目前有一个存储库设置,用于加载访问视图控制器操作时用户需要填写的表单。。。我的设置方式如下所示: public ActionResult View(long id) { Patient patient = patientRepo.GetPatient(id); if (patient == null) return View("NotFound"); var forms = formRepo.GetFormsFor

我目前有一个存储库设置,用于加载访问视图控制器操作时用户需要填写的表单。。。我的设置方式如下所示:

public ActionResult View(long id)
    {
        Patient patient = patientRepo.GetPatient(id);
        if (patient == null)
            return View("NotFound");
        var forms = formRepo.GetFormsForPatient(id);
        return View(new PatientViewModel(patient, forms));
    }
viewmodel是:

public class PatientViewModel
{
    //properties
    public Patient Patient { get; set; }
    public IQueryable<Form> Forms { get; set; }
    //constructor
    public PatientViewModel(Patient patient, IQueryable<Form> forms)
    {
        Patient = patient;
        Forms = forms;
    }
}
公共类PatientViewModel
{
//性质
公共患者{get;set;}
公共IQueryable表单{get;set;}
//建造师
公共患者视图模型(患者-患者,IQueryable表单)
{
病人=病人;
形式=形式;
}
}
最后,我的forms repo方法如下所示:

public IQueryable<Form> GetFormsForPatient(long id)
    {
        List<Form> formsReturn = new List<Form>();
        var forms = from form in db.Forms
                    where form.PatientID == id
                    select form;
        foreach (var form in forms)
            formsReturn.Add(form);
        return formsReturn.AsQueryable();
    }
public IQueryable GetFormsForPatient(长id)
{
列表表单返回=新列表();
var forms=来自db.forms中的表单
其中form.PatientID==id
选择表格;
foreach(表单中的var表单)
表单返回。添加(表单);
返回表单return.AsQueryable();
}
问题是,当我尝试循环遍历forms对象并访问forms表的一些关系数据时(forms表保存form和patient之间的关系,还有另一个表保存需要加载的form数据),当我尝试执行以下操作时,会得到一个空引用

<% foreach (var form in Model.Forms)
       { %>
        <p>Form: <%= Html.Encode(form.FormTextBank.FormName) %></p>
        <p><%= form.FormTextBank.FormText %></p>
    <% } %>

表格:


有人能发现任何错误吗?

您是否有可能在Linq to Sql中禁用了更改跟踪?我发现,如果是这样的话,关系数据不会自动出现


找到了问题。。。表格中填写不正确的ID将导致无结果

患者ID等于参数,是否有任何形式?

不再相关…请参见下面Jimmy的答案。在接下来的21小时内无法标记为已回答