Sie können diese Erweiterungsmethoden verwenden : (Speichern als PartialWithScript.cs)
namespace System.Web.Mvc.Html
{
public static class PartialWithScript
{
public static void RenderPartialWithScript(this HtmlHelper htmlHelper, string partialViewName)
{
if (htmlHelper.ViewBag.ScriptPartials == null)
{
htmlHelper.ViewBag.ScriptPartials = new List<string>();
}
if (!htmlHelper.ViewBag.ScriptPartials.Contains(partialViewName))
{
htmlHelper.ViewBag.ScriptPartials.Add(partialViewName);
}
htmlHelper.ViewBag.ScriptPartialHtml = true;
htmlHelper.RenderPartial(partialViewName);
}
public static void RenderPartialScripts(this HtmlHelper htmlHelper)
{
if (htmlHelper.ViewBag.ScriptPartials != null)
{
htmlHelper.ViewBag.ScriptPartialHtml = false;
foreach (string partial in htmlHelper.ViewBag.ScriptPartials)
{
htmlHelper.RenderPartial(partial);
}
}
}
}
}
So verwenden:
Beispiel partiell: (_MyPartial.cshtml) Setzen Sie die html in das if und die js in das else.
@if (ViewBag.ScriptPartialHtml ?? true)
<p>I has htmls</p>
}
else {
<script type="text/javascript">
alert('I has javascripts');
</script>
}
Fügen Sie in Ihre _Layout.cshtml, oder wo auch immer die Skripte der Teilbereiche gerendert werden sollen, folgendes ein (einmal): Es wird nur das Javascript aller Teilbereiche auf der aktuellen Seite an dieser Stelle gerendert.
@{ Html.RenderPartialScripts(); }
Um Ihren Teilbereich zu verwenden, gehen Sie einfach wie folgt vor: Es wird nur die HTML an dieser Stelle gerendert.
@{Html.RenderPartialWithScript("~/Views/MyController/_MyPartial.cshtml");}