Ответ 1
Вы не можете отображать разделы макета из частичного. Переместите определение раздела на родительскую страницу или макет.
Это код, который у меня есть в моем частичном представлении
@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.
Nb: он работает и для конкретного пакета. Подробнее - 'http://www.asp.net/mvc/overview/performance/bundling-and-minification'
он работает на любых подстраницах в бритве, включая частичные виды. для получения дополнительной информации google для использования этих помощников
Посмотрите мой ответ Как отредактировать раздел в частичном представлении, который позволяет вам определять сценарии и стили в любом представлении/частичном представлении. Он также заботится о дублировании.
Мой личный подход заключается в том, что разделы не являются хорошим решением для стилей и javascript.
Нет общего решения для этой проблемы, но вы можете сделать следующие простейшие способы:
1) Вы можете создать набор методов расширения следующим образом:
2) Просто переместите свои javascript-коды в отдельный частичный вид и на своем основном представлении, сделайте 2 частичных вида. Один для основного частичного просмотра, а другой для ваших сценариев:
{
// markup and razor code for Main View here
@Html.Partial("Main_PartialView")
}
@section Scripts
{
@Html.Partial("JavaScript_PartialView")
}
Надеюсь, что это поможет.
Это сработало для меня, позволяя мне комбинировать JavaScript и HTML для частичного просмотра в одном файле для удобства чтения.
В представлении, в котором используется Partial View, называемый "_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">
}
Эта страница Stackoverflow предоставила полное решение этого вопроса: Использование разделов в шаблонах редактора/дисплея
TL; DR: просто добавьте пакет Forloop.HtmlHelpers nuget https://www.nuget.org/packages/Forloop.HtmlHelpers/ в свой проект, чтобы вы могли запускать Javascript из Razor Partial Представления и шаблоны в ASP.NET MVC. Я лично использовал это с моим проектом MVC 5.
Вы можете добавить script непосредственно в конец частичного представления html без раздела script (поскольку раздел script не отображается в частичных представлениях)
<script language="javascript">
// Your scripts here
// ....
</script>