我有一个ASP.NET MVC应用程序是用C#编写的。我的应用程序有一个非常具体的一次性扩展方法。目前,我的扩展方法如下所示
public static MvcHtmlString CreateControl<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression, IEnumerable<SelectListItem> items, object htmlAttributes = null)
{
var name = ExpressionHelper.GetExpressionText(expression);
var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
var model = htmlHelper.ViewData.Model;
...
int i = 0;
i = i + 1;
}我在Visual中的“int i = 0;”窗口中设置了一个断点,可以看到model中的值列表。model有一个名为"MyValue“的属性。虽然我可以在“监视”窗口中看到它,但我不知道如何从代码中获得"MyValue“的值。model是TModel。我似乎不能对它进行类型转换。此外,我没有看到一个助手函数或任何东西。
如何从TModel对象获取属性值?
发布于 2015-02-17 14:52:32
您似乎有一个类型的TModel,它每次都要求它具有相同的属性。我将使所有这些类型都实现一个接口,并添加如下约束:
public interface IMyModel
{
MyValue { get; set; }
}现在添加约束:
public static MvcHtmlString CreateControl<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression, IEnumerable<SelectListItem> items, object htmlAttributes = null)
where TModel : IMyModel
{
var myModel = (IMyModel)htmlHelper.ViewData.Model;
//Now you can read the property:
var value = myModel.MyValue;
}https://stackoverflow.com/questions/28564035
复制相似问题