C# 如何定义要在网格中使用的模型

C# 如何定义要在网格中使用的模型,c#,model-view-controller,C#,Model View Controller,我有一个razor视图,其中将显示两个MVC网格。每个网格都有一个存储过程的结果,该存储过程将返回一个数据列表。我正在尝试确定模型的外观 到目前为止,我所尝试的: 型号: public class ResultsViewModel { public List<YSM_sp_select_payment_history_Result> PaymentHistory { get; set; } public List<YSM_sp_select_comment_hi

我有一个razor视图,其中将显示两个MVC网格。每个网格都有一个存储过程的结果,该存储过程将返回一个数据列表。我正在尝试确定模型的外观

到目前为止,我所尝试的:

型号:

public class ResultsViewModel
{
    public List<YSM_sp_select_payment_history_Result> PaymentHistory { get; set; }
    public List<YSM_sp_select_comment_history_Result> CommentHistory { get; set; }
}
    var model = new ResultsViewModel();

    model.PaymentHistory = db.YSM_sp_select_payment_history(vm.LoanNumber).ToList();
    model.CommentHistory = db.YSM_sp_select_comment_history(vm.LoanNumber).ToList();

    return View("Search", model);
@model IEnumerable<YSMadmin.Models.ResultsViewModel>
...
    @(Html
          .Grid(Model)
          .Build(columns =>
          {
              columns.Add(model => model.PaymentHistory.TransactionCode).Titled("Transaction Code");
              columns.Add(model => model.PaymentHistory.TransactionType).Titled("Transaction Type");
              columns.Add(model => model.PaymentHistory.TransactionDate).Titled("Transaction Date").Formatted("{0:d}");
              columns.Add(model => model.PaymentHistory.EffectiveDate).Titled("Effective Date").Formatted("{0:d}");
              columns.Add(model => model.PaymentHistory.TransactionAmount).Titled("Transaction Amount");
          })
          .Empty("No data found")
          .Pageable()
          )
剃须刀视图:

public class ResultsViewModel
{
    public List<YSM_sp_select_payment_history_Result> PaymentHistory { get; set; }
    public List<YSM_sp_select_comment_history_Result> CommentHistory { get; set; }
}
    var model = new ResultsViewModel();

    model.PaymentHistory = db.YSM_sp_select_payment_history(vm.LoanNumber).ToList();
    model.CommentHistory = db.YSM_sp_select_comment_history(vm.LoanNumber).ToList();

    return View("Search", model);
@model IEnumerable<YSMadmin.Models.ResultsViewModel>
...
    @(Html
          .Grid(Model)
          .Build(columns =>
          {
              columns.Add(model => model.PaymentHistory.TransactionCode).Titled("Transaction Code");
              columns.Add(model => model.PaymentHistory.TransactionType).Titled("Transaction Type");
              columns.Add(model => model.PaymentHistory.TransactionDate).Titled("Transaction Date").Formatted("{0:d}");
              columns.Add(model => model.PaymentHistory.EffectiveDate).Titled("Effective Date").Formatted("{0:d}");
              columns.Add(model => model.PaymentHistory.TransactionAmount).Titled("Transaction Amount");
          })
          .Empty("No data found")
          .Pageable()
          )
@model IEnumerable
...
@(Html
.网格(模型)
.Build(列=>
{
columns.Add(model=>model.PaymentHistory.TransactionCode)。标题为(“交易代码”);
columns.Add(model=>model.PaymentHistory.TransactionType)。标题为(“交易类型”);
columns.Add(model=>model.PaymentHistory.TransactionDate);
columns.Add(model=>model.PaymentHistory.EffectiveDate);
columns.Add(model=>model.PaymentHistory.TransactionMount)。标题为(“交易金额”);
})
.Empty(“未找到数据”)
.Pageable()
)

在网格中定义列时出错。我试着将其中一个结果传递给网格,结果正确。但我一直坚持的是正确定义模型。仅显示一个网格以供参考。

控制器操作代码返回ResultsViewModel的单个对象

var model = new ResultsViewModel();
/* Other controller action code goes here */
return View("Search", model);
但您有razor视图获取ResultsViewModel的集合。所以,这可能就是导致访问模型属性出现问题的原因。因此,请尝试更新razor视图,如下所示:

@model YSMadmin.Models.ResultsViewModel
...
    @(Html
          .Grid(Model.PaymentHistory)
          .Build(columns =>
          {
              columns.Add(model => model.TransactionCode).Titled("Transaction Code");
              columns.Add(model => model.TransactionType).Titled("Transaction Type");
              columns.Add(model => model.TransactionDate).Titled("Transaction Date").Formatted("{0:d}");
              columns.Add(model => model.EffectiveDate).Titled("Effective Date").Formatted("{0:d}");
              columns.Add(model => model.TransactionAmount).Titled("Transaction Amount");
          })
          .Empty("No data found")
          .Pageable()
          )

控制器代码显示返回的是ResultsViewModel类型的单个对象,但视图使用IEnumerable集合。这是打字错误吗?为什么不同?它有什么帮助?请向您的回答提供详细信息有两个结果,所以我需要定义在每个网格中使用哪一组。@Craig请参考此行:。网格(Model.PaymentHistory)。对于另一个网格,可以以相同的方式使用Model.CommentHistory。我希望这能回答你的问题。@Craig你能发布错误消息吗。顺便问一下,您是否有机会更改用于构建此razor视图的模型的数据类型(从使用ResultsViewModel的集合更改为ResultsViewModel的单个对象)?@sam适用于您建议的更改!谢谢