即使已定义,也无法从对象获取价值

时间:2019-09-27 09:16:43

标签: umbraco umbraco8

我的页面上有一些代码。

<td valign="top" class="contact-col3">
    <div>
        <p class="blueTxt">@(model.HasProperty("title3") ? model.GetProperty("title3").Value() : "")</p>
        @(model.HasProperty("abningstider") ? model.GetProperty("abningstider").Value() : "")
    </div>
</td>

运行代码时,出现以下错误:对象引用未设置为对象的实例

我一直在运行调试器,这是我在运行该行之前检查元素时看到的内容。

enter image description here

错误出现在代码@(model.HasProperty("abningstider") ? model.GetProperty("abningstider").Value() : "")的这一行

有人知道解决此问题的方法吗?

2 个答案:

答案 0 :(得分:0)

我猜可能是这个...

model.GetProperty("abningstider").Value

不是

model.GetProperty("abningstider").Value()

(或者,甚至更好的是,看起来您也可以建模。Abningstider吗?)

答案 1 :(得分:0)

如果使用ModelsBuilder,并且将IPublishedContent强制转换为键入的模型,则可以使用model.Abningstider。否则,您应该使用model.Value("abningstider");

您在代码中所做的就是访问属性对象,而您无需这样做。您正在检查属性是否存在于doctype中,而不是它是否具有值。

要检查该值是否存在,请使用HasValue()

@(model.HasValue("abningstider") ? model.Value("abningstider") : "")

如果您使用的是ModelsBuilder,则可以使用类型化的模型,但是首先必须从UmbracoViewPage<>继承视图并指定模型:

@inherits Umbraco.Web.Mvc.UmbracoViewPage<YourModel>

然后您可以像使用它一样

Model.Abningstider