如何正确访问 .cshtml 中条件的 ViewModel 属性
How to correctly access the ViewModel properties for a condition in a .cshtml
我正在尝试在 kendo UI 网格中应用 "filter",如果 ViewModel 的 属性 为真,则显示单元格的值使用 link 地址,如果为 false,则只显示没有 address.The 的值 此网格的 viewModel 有一个名为 IsRecorded 的 属性,它用作前面解释的过滤器。
但由于某种原因,当我 运行 项目并进入 Kendo 网格所在的模块时,我不断收到以下错误:
System.NullReferenceException: 'Object reference not set to an instance of an object.'
System.Web.Mvc.WebViewPage.Model.get 返回空值。
这是我的 kendo .cshtml
@(Html.Kendo().Grid<PersonReportViewModel>()
.Name("Report")
.Columns(columns =>
{
columns.Bound(m => m.Name)
.HeaderHtmlAttributes(new { @class = "Name" }).HtmlAttributes(new { @class = "Name" });
if (Model.IsRecorded)
{
columns.Bound(m => m.Id)
.HeaderHtmlAttributes(new { @class = "Id" }).HtmlAttributes(new { @class = "Id" })
.ClientTemplate("<a href=\"SomeAdress"</a>");
}
else
{
columns.Bound(m => m.Id)
.HeaderHtmlAttributes(new { @class = "Id" }).HtmlAttributes(new { @class = "Id" });
};
我是不是在if条件下用模型class访问错了?奇怪的是,当使用 Model.它向我展示了 viewmodel 的所有属性,就像它正确访问它但返回 null 一样。
条件实现也完全正确吗?
感谢您的回答。
Model.IsRecorded 会查看页面模型,而不是网格模型 (PersonReportViewModel)。 here 显示了实现该目标的几种方法。我会使用 ClientTemplate:
columns.Template(t => {}).ClientTemplate(
"# if (IsRecorded) {#"
+ "<a href=\'SomeAdress'</a>"
+ "# } else { #"
+ @"<span>#=JobId#</span>"
+ "# } #")
.HeaderHtmlAttributes(new { @class = "Id" })
.HtmlAttributes(new { @class = "Id" })
.Title("Job Id");
如果您有缺少 #
或 {
.
等错误,将会出现控制台错误
我正在尝试在 kendo UI 网格中应用 "filter",如果 ViewModel 的 属性 为真,则显示单元格的值使用 link 地址,如果为 false,则只显示没有 address.The 的值 此网格的 viewModel 有一个名为 IsRecorded 的 属性,它用作前面解释的过滤器。
但由于某种原因,当我 运行 项目并进入 Kendo 网格所在的模块时,我不断收到以下错误:
System.NullReferenceException: 'Object reference not set to an instance of an object.'
System.Web.Mvc.WebViewPage.Model.get 返回空值。
这是我的 kendo .cshtml
@(Html.Kendo().Grid<PersonReportViewModel>()
.Name("Report")
.Columns(columns =>
{
columns.Bound(m => m.Name)
.HeaderHtmlAttributes(new { @class = "Name" }).HtmlAttributes(new { @class = "Name" });
if (Model.IsRecorded)
{
columns.Bound(m => m.Id)
.HeaderHtmlAttributes(new { @class = "Id" }).HtmlAttributes(new { @class = "Id" })
.ClientTemplate("<a href=\"SomeAdress"</a>");
}
else
{
columns.Bound(m => m.Id)
.HeaderHtmlAttributes(new { @class = "Id" }).HtmlAttributes(new { @class = "Id" });
};
我是不是在if条件下用模型class访问错了?奇怪的是,当使用 Model.它向我展示了 viewmodel 的所有属性,就像它正确访问它但返回 null 一样。 条件实现也完全正确吗?
感谢您的回答。
Model.IsRecorded 会查看页面模型,而不是网格模型 (PersonReportViewModel)。 here 显示了实现该目标的几种方法。我会使用 ClientTemplate:
columns.Template(t => {}).ClientTemplate(
"# if (IsRecorded) {#"
+ "<a href=\'SomeAdress'</a>"
+ "# } else { #"
+ @"<span>#=JobId#</span>"
+ "# } #")
.HeaderHtmlAttributes(new { @class = "Id" })
.HtmlAttributes(new { @class = "Id" })
.Title("Job Id");
如果您有缺少 #
或 {
.