【问题标题】:Custom HTML Helpers in MVC5 with Model Lambda带有模型 Lambda 的 MVC5 中的自定义 HTML 助手
【发布时间】:2014-10-30 18:26:38
【问题描述】:

我正在尝试创建一个自定义 HTML 帮助程序,该帮助程序将导致 HTML 编辑器出现在 MVC 应用程序中。 我一直按照以下说明操作:http://dan.cx/2012/05/custom-strongly-typed-htmlhelpers-in-asp-net-mvc。我无法让它工作并且完全被卡住了。

这是我创建的 HtmlHelper .....

public static class HTMLEditor
{
    

    public static HtmlString RenderFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, int? width = 810, int? height = 200)
    {
        var name = html
                    .ViewContext
                    .ViewData
                    .TemplateInfo
                    .GetFullHtmlFieldName(ExpressionHelper.GetExpressionText(expression));
        var metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);

        string myEditor = "<textarea id='" + name + "' ";
        myEditor += "class='textarea' placeholder='' style='width: " + width + "px !important; height: " + height + "px !important'></textarea>";
        myEditor += "<script>$('#" + name + "').wysihtml5({'html':true,'color': false,parser: function(html) {return html;}});";
        myEditor += "editor.on('load', function() {editor.focus();editor.composer.commands.exec('insertHTML', '" + metadata.Model + "');})";
        myEditor += "</script>";
        return new HtmlString(myEditor);
    }
}

然后,在我的 Razor 视图中,我正在尝试像这样使用帮助器...

@HTMLEditor.RenderFor(model => model.PageDetail.HTML)

但是,一切都可以编译,但是当需要将视图呈现给浏览器时,我收到一个错误:

编译错误

描述:在编译服务此请求所需的资源期间发生错误。请查看以下具体错误详情并适当修改您的源代码。

编译器错误消息:CS1501:方法“RenderFor”没有重载需要 1 个参数

我不确定问题出在哪里。我确实看到 RenderFor 方法有两个参数,但我不确定如何传入模型实例值并在回发后将该值保留在模型实例中。

我们将不胜感激。

谢谢 马特

【问题讨论】:

  • 附带说明,您可以只使用string name = ExpressionHelper.GetExpressionText(expression);,您应该考虑使用TagBuilder 来生成您的html。

标签: c# asp.net asp.net-mvc lambda html-helper


【解决方案1】:

在我看来,您在错误的对象上调用 .RenderFor。

您的 RenderFor 方法是 HtmlHelper 的扩展方法。因此,您应该从视图中调用 @Html.RenderFor(model => ...)。

【讨论】:

  • 这成功了!非常感谢安东尼。这是我第一次尝试使用这样的自定义 HTML 帮助器...
  • 没问题 :-) 你已经接近了!
猜你喜欢
  • 2014-09-24
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
  • 2019-07-30
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
相关资源
最近更新 更多