asp.net-mvc – 用于轻量级内容编辑的MVC 5自定义HtmlHelper
发布时间:2020-12-16 03:23:29 所属栏目:asp.Net 来源:网络整理
导读:经过多年与WebForms的合作,我最近开始向MVC过渡.我正在尝试创建一个可插入的轻量级内容编辑模块,但我遇到了一些问题. 这个想法很简单:创建一个名为EditableSimpleHtml的HtmlHelper,可以在@using … {}语法中使用,以便在剃刀视图中实现以下功能: @using (Ht
经过多年与WebForms的合作,我最近开始向MVC过渡.我正在尝试创建一个可插入的轻量级内容编辑模块,但我遇到了一些问题.
这个想法很简单:创建一个名为EditableSimpleHtml的HtmlHelper,可以在@using … {}语法中使用,以便在剃刀视图中实现以下功能: @using (Html.EditableSimpleHtml("MyKey")) { <h3>Test</h3> <p> 1<br /> </p> } {…}之间的值是在数据存储中找不到内容时的默认值. 我创建了一个HtmlHelper.以下是简化版本: public static IDisposable EditableSimpleHtml(this HtmlHelper helper,string key) { // Get the content from the data storage using the key (I will not show the provider itself,its just a provider that will access a db) var provider = ContentEditing.Provider; string value = provider.GetValue(key); if (value == null) { // No value found in the data storage for the supplied key,we have to use the default value from within the @using... { } statement // Can I get that value here? I want to to store it initialy in the data storage value = "..."; // How to get html from within the @using... { }? } return new ContentEditableHtmlString(helper,value); } public class ContentEditableHtmlString : IDisposable { private readonly HtmlHelper _helper; public ContentEditableHtmlString(HtmlHelper helper,string value) { _helper = helper; var builder = new TagBuilder("div"); var writer = _helper.ViewContext.Writer; writer.Write(builder.ToString(TagRenderMode.StartTag)); writer.Write(value); } public void Dispose() { _helper.ViewContext.Writer.Write("</div>"); } } 问题是我无法从HtmlHelper中的@using … {}语句中获取(默认)内容,或者至少我不知道如何.我需要它,以防我想最初将它存储到数据库. 第二个问题是@using … {}语句之间的值将始终呈现.在可以从数据存储器加载内容的情况下,我希望将默认值替换为来自数据存储器的值. 有没有办法实现这一点,还是我开始走错了路? 解决方法
您无法按照现在的方式在@using {…}语句中获取html.
你可以做的最接近的事情是使用Templated Razor Delegates public static HelperResult EditableSimpleHtml(this HtmlHelper helper,string key,Func<string,HelperResult> template) { var templateResult = template(null); //you have your value here that you can return directly //or you can return HelperResult to write to the response directly var templateResultHtml = templateResult.ToHtmlString(); return new HelperResult(writer => { templateResult.WriteTo(writer); }); } 在你看来: @Html.EditableSimpleHtml("MyKey",@<text> <h3>Test</h3> <p>@DateTime.Now</p> </text>) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- .NET Core技术研究-中间件的由来和使用
- asp.net-core – 如何将IHttpContextAccessor注入到Autofac
- ASP.NET Core 的 `Core` 有几种写法?
- 高流量ASP.NET MVC编码注意事项
- 如何在ASP.NET中的GridView中定义CellPadding
- asp.net – Visual Studio 2010中的HTML格式
- 以30种语言开发ASP.NET网站的最佳实践?
- asp.net – .NET 4.0 ObjectCache的线程安全和范围管理
- remoting和webservice有什么区别
- asp.net-mvc – 从ASP.NET MVC操作返回什么来允许jQuery aj
推荐文章
站长推荐
- Asp.net程序添加代理
- asp.net核心 – 如何在Asp.Net Core中注册同一个
- asp.net-mvc-3 – ASP.NET MVC 3: – 使用数据库
- asp.net-mvc – ASP.NET MVC:自定义排序
- asp.net – 根据自己的主机Web API Windows服务验
- 将变量从ASP.net传递给JavaScript
- 在ASP.NET Web安装项目中,我可以在IIS中禁用匿名
- asp.net-mvc – 实体框架 – 选择特定列并返回强
- 从app_data中删除文件夹时如何防止asp.net重新编
- .net – 在DelegatingHandler中设置WWW-Authenti
热点阅读