Injecting content into specific sections from a partial view ASP.NET MVC 3 with Razor View Engine

后端 未结 24 2055
无人共我
无人共我 2020-11-22 06:13

I have this section defined in my _Layout.cshtml

@RenderSection(\"Scripts\", false)

I can easily use it from a view:

24条回答
  •  半阙折子戏
    2020-11-22 06:35

    Pluto's idea in a nicer way:

    CustomWebViewPage.cs:

        public abstract class CustomWebViewPage : WebViewPage {
    
        public IHtmlString PartialWithScripts(string partialViewName, object model) {
            return Html.Partial(partialViewName: partialViewName, model: model, viewData: new ViewDataDictionary { ["view"] = this, ["html"] = Html });
        }
    
        public void RenderScriptsInBasePage(HelperResult scripts) {
            var parentView = ViewBag.view as WebPageBase;
            var parentHtml = ViewBag.html as HtmlHelper;
            parentView.DefineSection("scripts", () => {
                parentHtml.ViewContext.Writer.Write(scripts.ToHtmlString());
            });
        }
    }
    

    Views\web.config:

    
    

    View:

    @PartialWithScripts("_BackendSearchForm")
    

    Partial (_BackendSearchForm.cshtml):

    @{ RenderScriptsInBasePage(scripts()); }
    
    @helper scripts() {
    
    }
    

    Layout page:

    @RenderSection("scripts", required: false)
    

提交回复
热议问题