如何在 PartView 中连接使用 HtmlHelper 扩展生成的 JavaScript 并添加到父视图
How to concatenate JavaScript generated with HtmlHelper extension inside PartialViews and add to parent View?
我在父视图中有 2 个 PartViews。
在这两个 PartiaViews 中,我生成了一些 JavaScript 代码,这些代码需要包含在父视图的底部。
这是 HtmlHelper 扩展,它在 PartialView 中生成一些 JavaScript。
public static MvcHtmlString KO_ObjectFor<TModel>(this HtmlHelper<TModel> htmlHelper)
{
String str = "some javascript code";
return MvcHtmlString.Create(str);
}
这是父视图(主视图)
...
//First Partial View
<% Html.RenderPartial("_PartialViewFirst"); %>
//Second Partial View
<% Html.RenderPartial("_PartialViewSecond"); %>
//Here I need to display the JavaScript from the PartialViews
<script type="text/javascript">
<%: Html.FunctionToConcatenateJavaScript() %>
</script>
...
什么是正确的方法?
您可以使用 Stack 在 HttpContext 中推送和弹出脚本:
public static class HtmlExtensions
{
private const string ScriptsKey = "__scripts__";
public static MvcHtmlString KO_ObjectFor<TModel>(this HtmlHelper<TModel> htmlHelper)
{
var stack = htmlHelper.ViewContext.HttpContext.Items[ScriptsKey] as Stack<string>;
if (stack == null)
{
stack = new Stack<string>();
htmlHelper.ViewContext.HttpContext.Items[ScriptsKey] = stack;
}
String str = "some javascript code";
stack.Push(str);
return new HtmlString("some code that the helper needs to generate and output to the view");
}
public static IHtmlString FunctionToConcatenateJavaScript(this HtmlHelper htmlHelper)
{
var stack = htmlHelper.ViewContext.HttpContext.Items[ScriptsKey] as Stack<string>;
if (stack == null)
{
return MvcHtmlString.Empty;
}
var scriptTag = new TagBuilder("script");
scriptTag.Attributes["type"] = "text/javascript";
var sb = new StringBuilder();
foreach (var script in stack)
{
sb.AppendLine(script);
}
scriptTag.InnerHtml = sb.ToString();
return new HtmlString(scriptTag.ToString());
}
}
然后你可以推:
<%= Html.KO_ObjectFor(x => x.Foo) %>
<%= Html.KO_ObjectFor(x => x.Bar) %>
...
然后在母版中全部弹出:
<%= Html.FunctionToConcatenateJavaScript() %>
也许你可以这样做:
部分 1:
@{
ViewBag.JS = @Html.KO_ObjectFor(firstJs);
}
部分 2:
@{
ViewBag.JS += @Html.KO_ObjectFor(secondJs);
}
主要:
<script type="text/javascript">
@ViewBag.JS
</script>
对不起剃刀语法
相关文章:
- 单击更改图标并通过javascript添加一个css类
- 用Javascript添加带有#text的tr元素
- 如何将javascript添加到Wordpress侧边栏中
- 如果选中复选框,则 JavaScript 添加值
- 如何使用javascript添加svg
- 用javascript添加类,而不是替换
- 如何选择具有类名的元素并使用javascript添加到数组中
- 使用JSON和JavaScript添加额外的html列表元素
- 以编程方式将特定的JavaScript添加到Qualtrics中的特定问题中
- 使用JavaScript添加单词样式,但避免链接
- 如何将javascript添加到wordpress网站
- 使用 javascript 添加微数据
- 通过JavaScript添加引导按钮
- 通过javascript添加重复元素
- 如何使用Javascript添加和使用Div作为总计算器
- 关于为JavaScript添加适当的语言环境支持,我目前有什么建议可以遵循吗
- Javascript-添加具有不同值的相同属性
- 如果在数组中发现重复,则必须通过纯javascript添加带关键字的索引
- 在本地将javascript添加到examplep中以执行数学/公式运算
- JavaScript添加天数