C# 如何定义要在网格中使用的模型
我有一个razor视图,其中将显示两个MVC网格。每个网格都有一个存储过程的结果,该存储过程将返回一个数据列表。我正在尝试确定模型的外观 到目前为止,我所尝试的: 型号: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
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适用于您建议的更改!谢谢