Sol*_*812 2 c# asp.net asp.net-mvc lambda html-helper
我正在尝试创建一个自定义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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在我的Razor视图中,我试图使用这样的助手......
@HTMLEditor.RenderFor(model => model.PageDetail.HTML)
Run Code Online (Sandbox Code Playgroud)
但是,一切都可以编译好,但是当需要将视图呈现给浏览器时,我收到一个错误:
编译错误
描述:编译服务此请求所需的资源时发生错误.请查看以下特定错误详细信息并相应地修改源代码.
编译器错误消息:CS1501:方法'RenderFor'没有重载需要1个参数
我不确定问题出在哪里.我确实看到RenderFor方法有两个参数,但我不确定如何传递模型实例值并在回发后保留模型实例中的值.
这里的任何帮助将不胜感激.
谢谢马特
它看起来就像你在调用.Render For对错误的对象.
您的RenderFor方法是HtmlHelper的扩展方法.因此,您应该从视图中调用@ Html.RenderFor(model => ...).
| 归档时间: |
|
| 查看次数: |
3588 次 |
| 最近记录: |