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

时间:2009-09-25 20:47:26

标签: 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.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;
    }
}

最后我的表单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();
    }

问题是当我尝试遍历我的表单对象并访问表格表中的一些关系数据时(表格表格保存表格和患者之间的关系,还有另一个表格,其中包含需要加载的表格数据)I在尝试执行类似

之类的操作时获取空引用
<% foreach (var form in Model.Forms)
       { %>
        <p>Form: <%= Html.Encode(form.FormTextBank.FormName) %></p>
        <p><%= form.FormTextBank.FormText %></p>
    <% } %>

任何人都可以发现任何错误吗?

3 个答案:

答案 0 :(得分:0)

您是否有机会禁用Linq-to-Sql中的更改跟踪?我发现如果是这种情况,关系数据就不会自动出现。

http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.objecttrackingenabled.aspx

答案 1 :(得分:0)

发现问题...表中错误填写的ID导致无结果

答案 2 :(得分:0)

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