我有这个EditorFor:
@Html.EditorFor(m => m.MyDecimalValue, new { htmlAttributes = new { additionalClass = (Model.OperationType == EDIT ? "disabled" : "") } })
我以这种方式渲染:
@model decimal?
@{
var classes = new { @class = "form-control is-decimal ";
var htmlAttributes = ViewData["htmlAttributes"] ?? "" };
}
@Html.TextBoxFor(m => m, classes)
一旦additionalClass
不为空或为空,我需要将其值与@class
字符串连接。
您将如何做?不确定如何从additionalClass
获取htmlAttributes
的值到部分。
htmlAttributes["additionalClass"]
不起作用。
答案 0 :(得分:2)
这是一个匿名类型,因此您可以使用反射。例如:
private object GetPropertyValue(object item, string propertyName)
{
var propertyInfo = item.GetType().GetProperty(propertyName);
return propertyInfo.GetValue(item);
}
并像这样使用:
var additionalClass = GetPropertyValue(htmlAttributes, "additionalClass");
另一种方法是使用dynamic
:
dynamic htmlAttributes = ViewData["htmlAttributes"];
var additionalClass = (string)htmlAttributes.additionalClass;