如何从htmlAttributes中提取单个值?

时间:2018-07-10 12:54:46

标签: asp.net-mvc

我有这个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"]不起作用。

1 个答案:

答案 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;