Asp.net Mvc显示列表取决于用户

时间:2016-03-17 14:31:23

标签: asp.net-mvc

我最初在我的应用程序上有一个基于Scarfolding System创建的昂贵列表,但每个用户的列表是相同的,我想要的是每个用户可以创建自己的昂贵列表并查看他自己的数据。

所以在昂贵的课堂上我做到了这一点:

public class Despesa
{
    public int TipoDespesaId { get; set; }

    public int DespesaId { get; set; }

    public string UserId { get; set; }

    [Display(Name = "Descrição da Despesa")]
    [Required]
    public string DespesaDescricao { get; set; }

    [Display(Name = "Valor")]
    [Required]
    public decimal DespesaValor { get; set; }

    public int TipoPagamentoId { get; set; }

    [Display(Name = "Data")]
    [DataType(DataType.Date)]
    [CustomValidation(typeof(Validator), "ValidateEndTimeRange")]
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}",ApplyFormatInEditMode = true)]
    [Required]
    public DateTime Data { get; set; }

    public TipoDespesa TipoDespesa { get; set; }

    public TipoPagamento TipoPagamento { get; set; }

    [Display(Name = "Comentário")]
    public string Comentario { get; set; }

}

我刚刚将UserId传递给模型,然后在我的昂贵视图的索引控制器中我做了一个linq查询来比较currentUserID和昂贵用户的Id这里是我的代码:

public ActionResult Index()
    {
        String userId = User.Identity.GetUserId();
        var despesas = from r in db.Despesas.Include(d => d.TipoDespesa).Include(d => d.TipoPagamento).Include(d => d.UserId)
                       where r.UserId.Equals(userId)
                       select r;

        return View(despesas.ToList());
    }

我需要知道的是我做错了因为我得到了 invalidOperationException

1 个答案:

答案 0 :(得分:0)

只有导航属性可以与.Include()一起使用。

您正在尝试包含原始属性(UserId),然后在转换为列表时抛出错误,因为它没有导航属性。

var despesas = from r in db.Despesas.Include(d => d.TipoDespesa).Include(d => d.TipoPagamento).Where(x => x.UserId == userId) select r;