首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET MVC -获取TModel属性值

ASP.NET MVC -获取TModel属性值
EN

Stack Overflow用户
提问于 2015-02-17 14:45:16
回答 2查看 7.2K关注 0票数 0

我有一个ASP.NET MVC应用程序是用C#编写的。我的应用程序有一个非常具体的一次性扩展方法。目前,我的扩展方法如下所示

代码语言:javascript
复制
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“的值。modelTModel。我似乎不能对它进行类型转换。此外,我没有看到一个助手函数或任何东西。

如何从TModel对象获取属性值?

EN

Stack Overflow用户

发布于 2015-02-17 14:52:32

您似乎有一个类型的TModel,它每次都要求它具有相同的属性。我将使所有这些类型都实现一个接口,并添加如下约束:

代码语言:javascript
复制
public interface IMyModel
{
    MyValue { get; set; }
}

现在添加约束:

代码语言:javascript
复制
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;
}
票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28564035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档