如何在MVC4的局部视图中添加脚本?(How to add a script in a partia

2019-07-17 17:45发布

这是我在我的局部视图代码

@model Contoso.MvcApplication.Models.Exercises.AbsoluteArithmetic

@using(Html.BeginForm())
{
<div>
    <span style="width: 110px; float:left; text-align:center; font-size:2.5em;">@Model.Number1</span>
    <span style="width: 110px; float:left; text-align:center; font-size:2.5em;">+</span>
    <span style="width: 110px; float:left; text-align:center; font-size:2.5em;">@Model.Number2</span>
    <span style="width: 110px; float:left; text-align:center; font-size:2.5em;">=</span>
    <span>
            @Html.EditorFor(model => model.Result)
            @Html.ValidationMessageFor(model => model.Result)
    </span>
</div>
}

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

请注意,在我的代码的底部,我有一个@section ,我意识到,它没有运行,如果我设置一个断点。 如果我动议线在_Layout.cshtml效果很好,但是这不是想法。

我怎么能告诉MVC4中,我想补充一点,图书馆的部分剃刀看法?

Answer 1:

您可以使用@Scripts.Render("~/Scripts/my-script.js")的.js文件和@Styles.Render("~/Content/my-Stylesheet.css")的css文件。

注意:它适用于一个特定的软件包还详细信息- “ http://www.asp.net/mvc/overview/performance/bundling-and-minification ”

它适用于任何的子页面在剃刀包括部分景色。 更多信息谷歌对这些助手的使用



Answer 2:

你不能从一个局部渲染布局部分。 移动部分定义父页面或布局。



Answer 3:

看看我的答案如何呈现的局部视图一节 ,它允许你在任何视图/局部视图定义脚本和样式。 它也需要照顾的副本包括。

我个人的看法是,部分不适合的风格很好的解决方案和javascript 包括



Answer 4:

有此问题没有通用的解决方案,但你可以做以下简单的方法:

1)您可以创建一套扩展的方法如下:

https://stackoverflow.com/a/6671766/5208058

2)只需移动的JavaScript代码转换成一个分开的局部视图和您的主视图中,使2个部分景色。 一个用于主局部视图,另一个用于脚本如下所示:

{
    // markup and razor code for Main View here

    @Html.Partial("Main_PartialView")
}

@section Scripts
{
    @Html.Partial("JavaScript_PartialView")
}

希望能帮助到你。



Answer 5:

您可以直接在局部视图的html末尾添加脚本,脚本不节(因为脚本部分未在局部视图渲染)

<script language="javascript">
   // Your scripts here
   // ....
</script>


Answer 6:

这个工作对我来说让我colocate JavaScript和HTML的局部视图在同一个文件以方便阅读

在查看它采用部分景观被称为“_MyPartialView.cshtml”

<div>
    @Html.Partial("_MyPartialView",< model for partial view>,
            new ViewDataDictionary { { "Region", "HTMLSection" } } })
</div>

@section scripts{

    @Html.Partial("_MyPartialView",<model for partial view>, 
                  new ViewDataDictionary { { "Region", "ScriptSection" } })

 }

在局部视图文件

@model SomeType

@{
    var region = ViewData["Region"] as string;
}

@if (region == "HTMLSection")
{


}

@if (region == "ScriptSection")
{
        <script type="text/javascript">
    </script">
}


Answer 7:

此页面#1提供一个完整的解决这个问题: 在编辑/显示模板使用节

TL; DR:只需添加Forloop.HtmlHelpers NuGet包https://www.nuget.org/packages/Forloop.HtmlHelpers/到您的项目,让你在ASP.NET MVC剃刀局部视图和模板运行JavaScript。 我曾亲自与我的MVC 5项目中使用此。



Answer 8:

如果您要包括特定脚本只在某些局部视图,并避免在整个应用程序不必要的传播它们,你可以这样做:

定义指向你的一个空JavaScript文件捆绑BundleConfig.cs

 bundles.Add(new ScriptBundle("~/bundles/empty").Include(
                    "~/Scripts/empty.js"
            ));

在你的头部_Layout.cshtml ,添加此变量:

@{
        ViewBag.AdditionalBundle = String.IsNullOrEmpty(ViewBag.AdditionalBundle) ? "~/bundles/empty" : ViewBag.AdditionalBundle;
    }

在你的底_Layout.cshtml ,呈现你想要的任何额外的包:

@Scripts.Render("~/bundles/lib")
    @Scripts.Render(@ViewBag.AdditionalBundle);
    @RenderSection("scripts", required: false)

最后,在你需要的任何特定脚本的局部视图,只需添加相应的捆绑给变量:

ViewBag.AdditionalBundle = "~/bundles/mySpecificBundle";

部分意见之前被渲染_Layout.cshtml ,所以你需要验证在文件的顶部。 它是这样的:如果任何局部视图分配一个值到ViewBag.AdditionalBundle ,然后使用它。 否则,呈现一个空脚本。



文章来源: How to add a script in a partial view in MVC4?