gpt4 book ai didi

asp.net-mvc - EditorFor HTML Helper 具有 knockout 功能

转载 作者:行者123 更新时间:2023-12-03 01:00:54 24 4
gpt4 key购买 nike

我认为拥有扩展版本会非常有用EditorFor HTML 帮助器自动为 Knockout JS 写出值数据绑定(bind)。

这适用于客户端 View 模型和服务器端 View 模型相同的情况 - 我已经通过使用 ko 映射并通过 AJAX 获取 View 模型自动生成了客户端 View 模型。

还有其他人尝试过类似的事情吗?或者是否有任何项目包含与我在这里想到的类似的内容?

这样做的好处是,重构时不会有丢失数据绑定(bind)值的危险。

最佳答案

我们已经沿着这些思路做了一些事情,它远非完美,我们的自定义扩展还有更多,但我提取了本质。

using System.Web.Mvc.Html;

namespace System.Web.Mvc
{
public static class EditorForExtensions
{
public static MvcHtmlString TextBoxForViewModel<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);

var htmlAttributes = HtmlAttributesForKnockout(metadata);

return htmlHelper.TextBoxFor(expression, htmlAttributes);
}

private static Dictionary<string, object> HtmlAttributesForKnockout(ModelMetadata metadata)
{
var htmlAttributes = new Dictionary<string, object>();

var knockoutParameter = String.Format("value: {0}", metadata.PropertyName);

htmlAttributes.Add("data-bind", knockoutParameter);

return htmlAttributes;
}
}
}

然后可以这样使用:

@Html.TextBoxForViewModel(m => m.Name)

关于asp.net-mvc - EditorFor HTML Helper 具有 knockout 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15593114/

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