gpt4 book ai didi

c# - html-元素属性,自定义HtmlHelper.xxxxFor

转载 作者:太空宇宙 更新时间:2023-11-03 16:22:16 24 4
gpt4 key购买 nike

我创建了一个扩展 HtmlHelper 的简单方法。基本上它是 TextBoxFor 方法,但有点定制以更好地满足我的目的。无论如何。我认为 HtmlHelper 使用新的方式 { @attributename = "attributevalue"} 创建 html-element 属性的东西真的很简洁..所以我的问题是..我怎样才能做同样的事情?

查看代码:

@Html.DaisyTextBoxFor(model => model.Text, new { @class="asd" })

帮助代码:

    public static MvcHtmlString DaisyTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IDictionary<string,object> attributes = null)
{
var value = ((PropertyViewModelProperty)htmlHelper.ViewData.Model.GetType().GetProperty(ExpressionHelper.GetExpressionText(expression)).GetValue(htmlHelper.ViewData.Model, null)).Value;

return MvcHtmlString.Create(String.Format("<input name=\"{0}\" value=\"{1}\" />", CreateForInputName(typeof(TModel), htmlHelper), value));
}

private static string CreateForInputName(Type model,HtmlHelper htmlHelper)
{
return HttpContext.Current.Server.HtmlEncode(model.AssemblyQualifiedName + "_" + htmlHelper.ViewData["propertyName"].ToString() + '_' + htmlHelper.ViewData["propertyGuid"].ToString());
}

最佳答案

我从来没有尝试过这个,但下面的方法行不通吗?

public static MvcHtmlString DaisyTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IDictionary<string,object> attributes = null)
{
var value = ((PropertyViewModelProperty)htmlHelper.ViewData.Model.GetType().GetProperty(ExpressionHelper.GetExpressionText(expression)).GetValue(htmlHelper.ViewData.Model, null)).Value;

return MvcHtmlString.Create(String.Format("<input name=\"{0}\" value=\"{1}\" class=\"{2}\" />", CreateForInputName(typeof(TModel), htmlHelper), value, attributes["class"]));
}

注意 MvcHtmlString.Create 部分中的 class={2} 部分。

关于c# - html-元素属性,自定义HtmlHelper.xxxxFor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13536581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com