Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何正确访问.cshtml中某个条件的ViewModel属性_.net_Asp.net Mvc_Kendo Ui_Kendo Grid_Asp.net Mvc Viewmodel - Fatal编程技术网

.net 如何正确访问.cshtml中某个条件的ViewModel属性

.net 如何正确访问.cshtml中某个条件的ViewModel属性,.net,asp.net-mvc,kendo-ui,kendo-grid,asp.net-mvc-viewmodel,.net,Asp.net Mvc,Kendo Ui,Kendo Grid,Asp.net Mvc Viewmodel,我正在尝试在剑道UI网格中应用一个“过滤器”,其中,如果ViewModel的属性为true,则显示带有链接地址的单元格值,如果为false,则仅显示不带地址的值。此网格的ViewModel有一个名为IsRecorded的属性,该属性用作前面解释的过滤器 但由于某些原因,我在运行项目并进入剑道网格所在的模块时,不断出现以下错误: System.NullReferenceException:“对象引用未设置为对象的实例。” System.Web.Mvc.WebViewPage.Model.get返回

我正在尝试在剑道UI网格中应用一个“过滤器”,其中,如果ViewModel的属性为true,则显示带有链接地址的单元格值,如果为false,则仅显示不带地址的值。此网格的ViewModel有一个名为IsRecorded的属性,该属性用作前面解释的过滤器

但由于某些原因,我在运行项目并进入剑道网格所在的模块时,不断出现以下错误:

System.NullReferenceException:“对象引用未设置为对象的实例。”

System.Web.Mvc.WebViewPage.Model.get返回空值

这是我的剑道.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" });
          };
@(Html.Kendo().Grid())
.名称(“报告”)
.列(列=>
{
columns.Bound(m=>m.Name)
.HeaderHtmlAttributes(新的{@class=“Name”}).HtmlAttributes(新的{@class=“Name”});
如果(型号已记录)
{
columns.Bound(m=>m.Id)
.HeaderHtmlAttributes(新的{@class=“Id”}).HtmlAttributes(新的{@class=“Id”})

.ClientTemplate(“Model.IsRecorded”将查看页面模型,而不是网格模型(PersonReportViewModel)。实现此目的的两种方法如下所示。我将使用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");
columns.Template(t=>{}).ClientTemplate(
“#如果(被记录){#”

+“Model.IsRecorded将查看页面模型,而不是网格模型(PersonReportViewModel)。下面显示了实现这一点的几种方法。我将使用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");
columns.Template(t=>{}).ClientTemplate(
“#如果(被记录){#”

+“非常感谢!这确实很有帮助。如果你或任何人有时间,你能用一种更简单的方式向我解释一下这里发生了什么吗?Template()中的{}是ClientTemplate()参数上的表达式吗?这些方法一起工作吗?在没有类/模型实例的情况下,如何访问If条件下的IsRecorded属性?以及#{指令的确切含义以及它们的用途是什么?很抱歉所有这些突然出现的问题,但我对所有ASP MVC、Razor和剑道ui的东西都是陌生的,我真的很想学习和理解它。是的,剑道和MVC Razor一样有一个学习曲线。请记住,所有这些都归结为html和javascript。最初我花了很多时间查看呈现的控件和javascript kendo。因此kendo有一个服务器端呈现的
模板
,或者客户端呈现的ClientTemplate。我认为您不再需要空模板,而是在ClientTemplate之前需要它。在客户端模板中,您可以在哈希之间访问当前模型(#)或在javascript中,如上面链接中所述。
.Template(t=>{})
-这只是意味着不要使用服务器模板。过去需要使用ClientTemplate。很好,感谢您的解释,提供的链接很棒,因为它有很多场景。因此,基本上,您可以在一句代码中拥有两个不同的视图,一个用于服务器端,另一个用于客户端。这一行怎么样:@“#=JobId#"是在JS代码语句中间的“开始剃须刀句”的指令吗?在“== JOBID”中是什么?从你所说的,在里面创建一个JS语句,你是否用= @?@ A访问JOBID的模型值。然后我们告诉KeDo在一个跨度元素中插入模型字段JOBID。o必须小心某些构造,因为您让kendo进行解释,并将其转换为html。在某些嵌套场景中,您必须告诉kendo将模板转换为html:
.ToClientTemplate().ToHtmlString())
。非常感谢!这确实很有帮助。如果你或任何人有时间,你能用更简单的方式解释一下这里发生了什么吗?Template()中的{}是ClientTemplate()上的表达式吗参数?这些方法一起工作?在没有类/模型实例的情况下,如何在if条件下访问IsRecorded属性?以及#{指令的确切含义以及它们的用途是什么?很抱歉所有这些突然出现的问题,但我对所有ASP MVC、Razor和剑道ui的东西都是陌生的,我真的很想学习和理解它。是的,剑道和MVC Razor一样有一个学习曲线。请记住,所有这些都归结为html和javascript。最初我花了很多时间查看呈现的控件和javascript kendo。因此kendo有一个服务器端呈现的
模板
,或者客户端呈现的ClientTemplate。我认为您不再需要空模板,而是在ClientTemplate之前需要它。在客户端模板中,您可以在哈希之间访问当前模型(#)或在javascript中,如上面链接中所述。
.Template(t=>{})
-这只是意味着不要使用服务器模板。过去需要使用ClientTemplate。很好,感谢您的解释,提供的链接很棒,因为它有很多场景。因此,基本上,您可以在一句代码中拥有两个不同的视图,一个用于服务器端,另一个用于客户端。这一行怎么样:@“#=作业ID#"是在JS代码语句中间的“开始剃须刀句”的指令吗?在“== JOBID”中是什么?从你所说的,在里面创建一个JS语句,你是否用= @?@ A访问JOBID的模型值。然后我们告诉KeDo在一个跨度元素中插入模型字段JOBID。o必须小心某些构造,因为您让kendo进行解释,并将其转换为html。在某些嵌套场景中,您必须告诉kendo将模板转换为html:
.ToClientTemplate().ToHtmlString()