asp.net-mvc - 在 html helper 中获取属性的值

标签 asp.net-mvc

我有一个自定义助手“我的”,我想在其中获取已用属性的值。

我这样称呼它:

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<VMThatHasAllTheseProps>" %>
<%=Html.My("Hi") %>
<%=Html.EditorFor(o => o.Prop) %> \\uses Html.My in the My.ascx template

<%=Html.My("[0].My") %>
<%=Html.My("[1].My") %>

和 helper :
public static MvcHtmlString My(this HtmlHelper html, string prop, object value = null)
{
//get value of the used property here
}

目前我喜欢这样:
 //get val from model
            if (value == null && html.ViewData.Model != null)
            {
                var p = TypeDescriptor.GetProperties(html.ViewData.Model).Find(prop, false);

                if (p != null) value = p.GetValue(html.ViewData.Model);
            }

            //get val from model metada
            if(value == null && html.ViewData.ModelMetadata != null)
            {
                var p = TypeDescriptor.GetProperties(html.ViewData.ModelMetadata.Model).Find(prop, false);
                if (p != null) value = p.GetValue(html.ViewData.ModelMetadata.Model);
            }

            //get val from viewdata
            if (value == null && html.ViewData.ContainsKey(prop))
                value = html.ViewData[prop];

但显然它不适用于 "[0].My"

最佳答案

ViewData.Eval(字符串表达式)?

ViewDataDictionary.Eval Method (System.Web.Mvc)

关于asp.net-mvc - 在 html helper 中获取属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4607266/

相关文章:

asp.net-mvc - 符合 MVC 4 站点 508

c# - 测试 ASP.NET MVC Controller Httpget

c# - 将我的 View 模型绑定(bind)到 View 会导致选中所有复选框

javascript - 无法捕获 HTML 字符串中元素的单击事件

javascript - ASP.NET MVC 将部分 View 呈现为字符串以使用 JSON 返回

jQuery 1.4.2 JSON 格式打破了 1.3.2 中过去的工作方式

asp.net-mvc - 隐藏未从 View 模型中获取正确的值

asp.net-mvc - Html.RenderAction MVC 区域路由问题

asp.net-mvc - 如何将内存中的图表(或图像)放入内存中的 OpenXML 文档中?

asp.net-mvc - ASP.NET MVC : how to catch a 404 error?