我在 ASP.Net MVC 4 中遇到了一些奇怪的行为。
根据我的视图模型中的一些信息,我正在尝试设置一些条件属性,如下所示:
<input type="checkbox" data-primary=@(Model.IsPrimary ? "true" : null) checked="@(Model.Selected ? "checked" : null)" disabled="@(Model.Disabled ? "disabled" : null) />
checked
这对and属性很好用disabled
,但由于某种原因,它总是会渲染data-primary
属性。Model.IsPrimary
会导致正确的data-primary="true"
,但会导致!Model.IsPrimary
空data-primary
属性。
这引出了我的第一个问题: 是什么导致了这种奇怪的行为?是因为我使用的是数据属性吗?它是数据属性中的破折号吗?
在那之后,我想,“好吧,当然,这很容易修复”,并像这样修复了我的代码:
<input type="checkbox" @(Model.IsPrimary ? "data-primary=\"true\"" : String.Empty) checked="@(Model.Selected ? "checked" : null)" disabled="@(Model.Disabled ? "disabled" : null) />
这修复了我的data-primary
属性被显示,但不知何故让我的disabled
和checked
属性在之后显示为空。
我现在的第二个问题是什么导致了这种行为?据我所知,我的代码中没有语法异常。
如果有人有任何关于剃须刀为什么会这样行为的信息,请回复。
PS:最后,我通过将我的data-primary
属性放在输入元素的末尾来“修复”事情,使一切都按预期进行。