这是我在我的局部视图代码
@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中,我想补充一点,图书馆的部分剃刀看法?
您可以使用@Scripts.Render("~/Scripts/my-script.js")
的.js文件和@Styles.Render("~/Content/my-Stylesheet.css")
的css文件。
注意:它适用于一个特定的软件包还详细信息- “ http://www.asp.net/mvc/overview/performance/bundling-and-minification ”
它适用于任何的子页面在剃刀包括部分景色。 更多信息谷歌对这些助手的使用
你不能从一个局部渲染布局部分。 移动部分定义父页面或布局。
看看我的答案如何呈现的局部视图一节 ,它允许你在任何视图/局部视图定义脚本和样式。 它也需要照顾的副本包括。
我个人的看法是,部分不适合的风格很好的解决方案和javascript 包括 。
有此问题没有通用的解决方案,但你可以做以下简单的方法:
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")
}
希望能帮助到你。
您可以直接在局部视图的html末尾添加脚本,脚本不节(因为脚本部分未在局部视图渲染)
<script language="javascript">
// Your scripts here
// ....
</script>
这个工作对我来说让我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">
}
此页面#1提供一个完整的解决这个问题: 在编辑/显示模板使用节
TL; DR:只需添加Forloop.HtmlHelpers NuGet包https://www.nuget.org/packages/Forloop.HtmlHelpers/到您的项目,让你在ASP.NET MVC剃刀局部视图和模板运行JavaScript。 我曾亲自与我的MVC 5项目中使用此。
如果您要包括特定脚本只在某些局部视图,并避免在整个应用程序不必要的传播它们,你可以这样做:
定义指向你的一个空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
,然后使用它。 否则,呈现一个空脚本。