Как я могу загрузить частичный вид внутри вид
Я очень путаю с этим частичным представлением...
Я хочу загрузить частичный вид внутри моего основного вида ...
вот простой пример...
я загружаю индекс.cshtml действия индекса Homecontroller в качестве главной страницы..
в индекс.cshtml я создаю ссылку через
@Html.ActionLink("load partial view","Load","Home")
В HomeController я добавляю новое действие под названием
public PartialViewResult Load()
{
return PartialView("_LoadView");
}
в _LoadView.cshmtl я просто
<div>
Welcome !!
</div>
но, при запуске проекта, Индекс.cshtml сначала отображает и показывает мне ссылку "Загрузить частичный вид"... когда я нажимаю на том, что он едет в Нью-instade страницы оказания приветственное сообщение от _LoadView.cshtml в индекс.cshtml по.
что может быть не так?
примечание: Я не хочу загружать страницу через AJAX или не хочу использовать Ajax.Actionlink панели
8 ответов
если вы хотите загрузить частичный вид в главном окне вы можете использовать Html.Action
помощник:
@Html.Action("Load", "Home")
или, если вы не хотите проходить через действие загрузки, используйте HtmlPartial hepler:
@Html.Partial("_LoadView")
если вы хотите использовать Ajax.ActionLink
, заменить Html.ActionLink
С:
@Ajax.ActionLink(
"load partial view",
"Load",
"Home",
new AjaxOptions { UpdateTargetId = "result" }
)
и, конечно, вам нужно включить держатель на Вашей странице, где будет отображаться частичный:
<div id="result"></div>
также не забудьте включить:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
в вашем основном представлении, чтобы включить Ajax.*
помощников. И убедитесь, что ненавязчивый JavaScript включен в вашем веб -.конфиг (это должно быть по умолчанию):
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
У меня была точно такая же проблема как Leniel. Я попробовал исправления, предложенные здесь и в дюжине других мест. То, что наконец сработало для меня, просто добавило
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
к моему макету...
если вы делаете это с @Html.ActionLink()
затем загрузка PartialView обрабатывается как обычный запрос при нажатии на элемент привязки, т. е. загрузка новой страницы с ответом метода PartialViewResult.
если вы хотите загрузить его immedialty, то вы используете @Html.RenderPartial("_LoadView")
или @Html.RenderAction("Load")
.
если вы хотите сделать это при userinteraction (т. е. нажав на ссылку), вам нужно использовать AJAX --> @Ajax.ActionLink()
для меня это сработало после того, как я загрузил ненавязчивую библиотеку AJAX через NuGet:
Search and install via NuGet Packages: Microsoft.jQuery.Unobtrusive.Ajax
чем добавить в представление ссылки на jQuery и AJAX ненавязчиво:
@Scripts.Render("~/bundles/jquery")
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"> </script>
следующий Ajax actionlink панели и div мы хотели бы представить результаты:
@Ajax.ActionLink(
"Click Here to Load the Partial View",
"ActionName",
null,
new AjaxOptions { UpdateTargetId = "toUpdate" }
)
<div id="toUpdate"></div>
небольшой твик к выше
@Ajax.ActionLink(
"Click Here to Load the Partial View",
"ActionName",
"ControlerName",
null,
new AjaxOptions { UpdateTargetId = "toUpdate" }
)
<div id="toUpdate"></div>
если вы хотите заполнить содержимое вашего частичного представления внутри вашего представления, вы можете использовать
@Html.Partial("PartialViewName")
или
{@Html.RenderPartial("PartialViewName");}
если вы хотите сделать запрос сервера и обработать данные, а затем вернуть частичный вид вам основной вид, заполненный этими данными, которые вы можете использовать
...
@Html.Action("Load", "Home")
...
public PartialViewResult Load()
{
return PartialView("_LoadView");
}
если вы хотите, чтобы пользователь нажал на ссылку, а затем заполнить данные частичного просмотра вы можете использовать:
@Ajax.ActionLink(
"Click Here to Load the Partial View",
"ActionName",
"ControlerName",
null,
new AjaxOptions { UpdateTargetId = "toUpdate" }
)
ОДНА ВЕЩЬ, ЧТОБЫ БЫТЬ В КУРСЕ - И Я УПАЛ В ГРЯЗЬ ОТ ЭТОГО...
jquery.validate.unobtrusive.js
jquery.validate.unobtrusive.min.js
НЕ СОВПАДАЮТ...
jquery.unobtrusive-ajax.js
jquery.unobtrusive-ajax.min.js
Я прочитал "ненавязчивый" и предположил, что у меня есть правильная библиотека - требуются AJAX!