相关疑难解决方法(0)

EditorFor()和additionalViewData:如何在helper类中添加数据?

EditorFor()可以采用一个object additionalViewData参数,填充的典型方法是:

EditorFor(model => model.PropertyName, new { myKey = "myValue" })

如何在自定义HTML帮助程序中检查additionalViewData的内容,添加或附加到键的现有值等?

我尝试过这些方法:

  • 转换为Dictionary<string, object>()和添加/追加值:不起作用,因为它看起来像MVC中的EditorFor的实现使用新的RouteValueDictionary(additionalViewData)将字典嵌入到字典中
  • 转换为RouteValueDictionary使用new RouteValueDictionary(additionalViewData)但具有与上述相同(或非常相似)的问题

我也愿意"你做错了" - 也许我错过了一个更简单的方法.请记住,我要做的是编写一个可重用的HTML帮助程序,并为自定义视图使用的additionalViewData添加一些值.有些值依赖于属性中的元数据,所以它只是使用一堆不同的模板并不是那么容易.

更新我正在做的事情的例子:

    public static MvcHtmlString myNullableBooleanFor<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> choice, string templateName, object additionalViewData)
    {            
        ModelMetadata metadata = ModelMetadata.FromLambdaExpression(choice, htmlHelper.ViewData);

        /*
    here need to add to additionalViewData some key values among them:
    { propertyName, metadata.PropertyName }

     */

        StringBuilder sb = new StringBuilder();
        sb.AppendLine(htmlHelper.EditorFor(choice, templateName, additionalViewData).ToString());
        MvcHtmlString validation = htmlHelper.ValidationMessageFor(choice);
        if (validation != null) …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc views anonymous-types asp.net-mvc-3

17
推荐指数
3
解决办法
3万
查看次数

MVC 3 + knockoutjs:在使用EditorFor作为布尔字段时添加data-bind属性

使用@Html.EditorFor(model =>model.IsClient),其中IsClient是布尔值,使用Not Set, Yes and No选项呈现下拉列表.

一切都很好.

现在我想将knockoutjs与我喜欢的结果下拉列表一起使用,那么如何使用@ Html.EditorFor添加data-bind属性,我需要使用knockoutjs来处理这个下拉列表?

我试过了:

@Html.EditorFor(model => model.IsClient, new Dictionary<string, object> { { "data-bind", "value: Account.IsClient" } })
Run Code Online (Sandbox Code Playgroud)

但是,它使用对象additionalViewData参数,并且它不呈现data-bind属性.这可能很自然,因为此参数可能与渲染标记的Html属性无关.

但是,找不到任何合理的文档,并且没有其他重载看起来可能是我想要的候选者.

TIA有什么建议.

asp.net-mvc-3 knockout.js

6
推荐指数
2
解决办法
7421
查看次数

@Value不工作

我正在使用mvc编辑器功能,但似乎@something不起作用.我不知道为什么.

@Html.EditorFor(model => model.Password, new { @Value = "xxx" })
Run Code Online (Sandbox Code Playgroud)

这取模型值而不是"xxx".

非常感谢你的帮助 !

c# asp.net asp.net-mvc razor

0
推荐指数
1
解决办法
182
查看次数