Chr*_*ill 5 asp.net-mvc html-helper knockout.js
我认为拥有一个扩展版本的EditorFor HTML帮助器非常有用,它可以自动为Knockout JS写出值数据绑定.
这将是客户端视图模型和服务器端视图模型相同的地方 - 我已经通过使用ko映射并通过AJAX获取viewmodel来自动生成客户端视图模型.
有没有其他人尝试这样的事情,或者是否有任何项目包括类似于我在这里的想法?
这样做的好处是,在重构时,不会有错过数据绑定值的危险.
我们已经沿着这些思路做了一些事情,它远非完美,并且我们在自定义扩展中还有更多内容,但我提取了本质。
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后可以这样使用:
@Html.TextBoxForViewModel(m => m.Name)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2001 次 |
| 最近记录: |