我是靠谱客的博主 欢喜月饼,最近开发中收集的这篇文章主要介绍c#+mvc中html帮助,c# – MVC 4 – 如何将模板传递给html帮助器方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我需要在页面底部放置所有脚本,问题是当我有部分视图时我不能使用“RenderSection”方法.找到了一个很好的例子,说明如何添加一个

HtmlHelper扩展,它接受一个脚本文件的名称,加载到一个堆栈中,然后另一个帮助器在基础布局上呈现出来:

这很棒 – 但是我不想为一小块脚本创建一个完整的JS文件,甚至可能是我想要放入的HTML.而且我不想将它全部作为字符串传递,我想要很好的格式和intellisense,所以我想使用一个模板,即:@{Html.AddScript("test", @

function RefreshPreview() {

$('#AutoReplyHtml_Preview').html(

$('#htmlTemplate').html()

.replace('@@MESSAGE_TITLE@@', $('#AutoReplySubject').val())

.replace('@@PRE_HEADER@@', $('#AutoReplyPreHeader').val())

.replace('@@MESSAGE_BODY@@', $('#AutoReplyHtml').val())

);

$('#AutoReplyPlainText_Preview').html(

$('#plainTextTemplate').html()

.replace('@@MESSAGE_BODY@@', $('#AutoReplyPlainText').val())

);

}

$(document).ready(function() {

RefreshPreview();

});

);}

问题是 – 如何将模板的值输入到我的方法中,我有这个符合的代码,但不知道如何从“代码”参数中获取数据:public static string AddScript(this HtmlHelper htmlHelper, string title, Func code) {

var ctx = htmlHelper.ViewContext.HttpContext;

Dictionary scripts = ctx.Items["HtmlHelper.AddScript"] as Dictionary;

if (scripts == null) {

scripts = new Dictionary();

ctx.Items.Add("HtmlHelper.AddScript", scripts);

}

scripts.Add(title, code.ToString()); //Doens't work!

return string.Empty;

}

我如何调整委托参数以获取模板中的值?

最佳答案 辅助架构的设计使其能够适应您提供模板的场景,例如,列表中的每个项目都可以运行.在这种情况下,您当然希望能够在迭代列表时将“当前”项目传递给它.

但是,在其他方案(例如您的方案)中,没有当前项目.然而,正如您所发现的那样,您仍然必须将委托声明为您的方法的参数,该方法定义了一个消耗一个参数的方法.没关系 – 既然你没有在你的助手中使用那个参数(你没有在你的模板中使用有些神奇的item参数),你可以在你的实现中将它传递给null.最好将参数声明为Func< object,IHtmlString>而不是Func< object,object>,但无论如何,只需调用代码(null).ToString()来获取需要呈现的HTML编码字符串.

最后

以上就是欢喜月饼为你收集整理的c#+mvc中html帮助,c# – MVC 4 – 如何将模板传递给html帮助器方法的全部内容,希望文章能够帮你解决c#+mvc中html帮助,c# – MVC 4 – 如何将模板传递给html帮助器方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部