我正在使用Razor,C#和.NET Framework 4.7开发ASP.NET MVC 5应用程序。
如果Model.IsChinaProduct
为真,我想将其设为不可编辑的文本框。
我在视图中有这段代码:
@Html.TextBoxFor(m => m.Configurations[index].PkgRatio, new { @class = "productClass", @onkeydown = "IsValidKey(event);" @if (Model.IsChinaProduct) disabled})
如果disabled
为true,我想添加Model.IsChinaProduct
属性,但该代码显示以下错误:
错误CS0746无效的匿名类型成员声明符。匿名类型 必须使用成员作业,简单名称或成员声明成员 会员访问。
如果disabled
为真,我如何添加Model.IsChinaProduct
属性?
更新
也许残疾不是正确的属性。
答案 0 :(得分:0)
AFAIK你不能,因为没有disabled="false"
,这意味着你应该这样做:
@{
var htmlAttributes = Model.IsChinaProduct ? (object)
new { @class = "productClass", readonly = "readonly" }
: new { @class = "productClass", @onkeydown = "IsValidKey(event);" };
}
@Html.TextBoxFor(m => m.Configurations[index].PkgRatio, htmlAttributes)
答案 1 :(得分:0)
要设置 ReadOnly ,请尝试以下操作:
@{
object displayMode = (Model.IsChinaProduct) ? new { @class = "productClass", @onkeydown = "IsValidKey(event);" }
: new { @class = "productClass", @onkeydown = "IsValidKey(event);" readonly = "readonly"};
@Html.TextBoxFor(m => m.Configurations[index].PkgRatio, displayMode)
}
答案 2 :(得分:0)
如果IsChinaProduct = true,请不要使用TextBoxFor 尝试使用DisplayFor与HiddenFor结合使用
像这样@if (Model.IsChinaProduct)
{
@Html.HiddenFor(m => m.Configurations[index].PkgRatio)
@Html.DisplayFor(m => m.Configurations[index].PkgRatio)
}
else
{
@Html.TextBoxFor(m => m.Configurations[index].PkgRatio)
}