Asp.net mvc 用于将模型转换为PropertyName的ASP.NET MVC html帮助程序代码

Asp.net mvc 用于将模型转换为PropertyName的ASP.NET MVC html帮助程序代码,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,此代码: @Html.HiddenFor(model => model.Country.CountryId) 给出此输出: <input type="hidden" id="Country_CountryId" name="Country.CountryId" /> 这应该是: <input type="text" id="Country_CountryName" name="Country.CountryName" data-HiddenId="Country_Co

此代码:

@Html.HiddenFor(model => model.Country.CountryId)
给出此输出:

<input type="hidden" id="Country_CountryId" name="Country.CountryId" />
这应该是:

<input type="text" id="Country_CountryName" name="Country.CountryName" data-HiddenId="Country_CountryId" />

我主要关心的是
数据隐藏ID
。我希望它等于为上面的
隐藏的
输入生成的
id

您可以尝试以下方法:

@Html.TestBoxFor(
    model => model.Country.CountryName, 
    new { 
        data_hiddenid = ExpressionHelper.GetExpressionText((Expression<Func<ModelType, int>>)(x => x.Country.CountryId))
    }
)

@Darin Dimitrov这不是我需要的Id的值。我正在使用jquery通过id检索隐藏的文本框。jquery从第二个
输入
属性中获取此id:
数据隐藏id
非常感谢,是否也可以只获取表达式的最终对象?例如,
CountryId
@Lol coder,你已经知道了:
CountryId
。你还需要什么?
@Html.TestBoxFor(
    model => model.Country.CountryName, 
    new { 
        data_hiddenid = ExpressionHelper.GetExpressionText((Expression<Func<ModelType, int>>)(x => x.Country.CountryId))
    }
)
public static class HtmlExtensions
{
    public static MvcHtmlString TextBoxWithIdFor<TModel, TProperty, TId>(
        this HtmlHelper<TModel> htmlHelper, 
        Expression<Func<TModel, TProperty>> expression, 
        Expression<Func<TModel, TId>> idExpression
    )
    {
        var id = ExpressionHelper.GetExpressionText(idExpression);
        return htmlHelper.TextBoxFor(expression, new { data_hiddenid = id });
    }
}
@Html.TestBoxWithIdFor(
    model => model.Country.CountryName, 
    model => model.Country.CountryId
)