Подтвердить что ты не робот

Как я могу загрузить частичный вид внутри представления

Я очень смущаюсь с этим частичным видом...

Я хочу загрузить частичный вид внутри моего основного вида...

вот простой пример...

Я загружаю Index.cshtml действия индекса Homecontroller как главную страницу.

в index.cshtml Я создаю ссылку через

@Html.ActionLink("load partial view","Load","Home")

в HomeController Я добавляю новое действие под названием

public PartialViewResult Load()
{
    return PartialView("_LoadView");
}

in _LoadView.cshmtl Я просто имею

<div>
    Welcome !!
</div>

НО, при запуске проекта index.cshtml сначала отображает и показывает мне ссылку "Load Partial View"... когда я нажимаю на нее, она переходит на новую страницу, чтобы сделать приветственное сообщение от _LoadView.cshtml в index.cshtml.

Что может быть неправильным?

Примечание. Я не хочу загружать страницу через AJAX или не хочу использовать Ajax.ActionLink

4b9b3361

Ответ 1

Если вы хотите загрузить частичный вид непосредственно в главном представлении, вы можете использовать помощник 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 включен в вашем web.config(он должен быть по умолчанию):

<add key="UnobtrusiveJavaScriptEnabled" value="true" />

Ответ 2

У меня была такая же проблема, как у Леняля. Я попробовал исправления, предложенные здесь, и еще дюжину других мест. То, что, наконец, сработало для меня, просто добавило

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")

в мой макет...

Ответ 3

Если вы делаете это с помощью @Html.ActionLink(), то загрузка PartialView обрабатывается как обычный запрос при нажатии на элемент привязки, т.е. загружает новую страницу с ответом метода PartialViewResult.
Если вы хотите загрузить его сразу, то вы используете @Html.RenderPartial("_LoadView") или @Html.RenderAction("Load").
Если вы хотите сделать это при взаимодействии с пользователем (то есть нажав ссылку), вам необходимо использовать AJAX → @Ajax.ActionLink()

Ответ 4

Для меня это сработало после того, как я загрузил AJAX Unobtrusive через 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>

Ответ 5

Маленькое tweek к выше

@Ajax.ActionLink(
    "Click Here to Load the Partial View", 
    "ActionName", 
    "ControlerName",
    null, 
    new AjaxOptions { UpdateTargetId = "toUpdate" }
)

<div id="toUpdate"></div>

Ответ 6

RenderParital лучше использовать для повышения производительности.

{@Html.RenderPartial("_LoadView");}

Ответ 7

если вы хотите заполнить содержимое частичного представления внутри своего представления, вы можете использовать

@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" }
)

Ответ 8

ОДНА ВЕЩЬ, ЧТОБЫ ОЗНАКОМИТЬСЯ - И Я СДЕЛАЛ ЭТО ЭТО...

jquery.validate.unobtrusive.js
jquery.validate.unobtrusive.min.js

НЕ ЯВЛЯЕТСЯ ТОЛЬКО КАК...

jquery.unobtrusive-ajax.js
jquery.unobtrusive-ajax.min.js

Я прочитал "ненавязчивый" и предположил, что у меня есть правильная библиотека - нужны AJAX!