Загрузить частичное представление в div - PullRequest
12 голосов
/ 29 декабря 2010

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

Контроллер

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index()
{
    return View();
}

public ActionResult Test()
{
    return PartialView("Test");
}

Просмотр

<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>

@using (Ajax.BeginForm("Test", "Home", new AjaxOptions { InsertionMode=InsertionMode.Replace, UpdateTargetId = "mydiv" }))
{    
    @Ajax.ActionLink("Save", "Test", "Home", new AjaxOptions{ });
}

<div id="mydiv">
    @Html.Partial("Test")
</div>

PartialView

<h1>Test</h1>

Ответы [ 4 ]

23 голосов
/ 30 декабря 2010

Несколько замечаний по поводу вашего кода:

  • Ajax.* помощники в ASP.NET MVC 3 RC2 больше не используют MS AJAX, который устарел в пользу jQuery, поэтому ваши включения в скрипт неверны,Вам необходимо включить jquery
  • У вас есть форма ajax без кнопки отправки и ссылка ajax внутри этой формы.Это не имеет никакого смысла.Либо используйте форму ajax, либо ссылку ajax.

Таким образом, ваш код может выглядеть следующим образом:

<script src="@Url.Content("~/scripts/jquery-1.4.4.js")" type="text/javascript"></script>

@Ajax.ActionLink("Save", "Test", "Home", new AjaxOptions { 
    InsertionMode = InsertionMode.Replace, 
    UpdateTargetId = "mydiv"
})

<div id="mydiv">
    @Html.Partial("Test")
</div>
12 голосов
/ 08 января 2011

Добавьте эту строку на свою страницу (главную страницу или макет)

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

сразу после строки MicrosoftMvcAjax.js.

1 голос
/ 24 января 2013

Я думаю, вы должны использовать <input type="submit" /> вместо @Ajax.Actionlink(...)

. В MVC4 вы можете добавить пакет @Scripts.Render("~/bundles/jqueryval") сразу после @Scripts.Render("~/bundles/jquery") или добавить ссылку на скрипт в разделе скриптов в представлении страницы, как показано ниже:

@section scripts
    {
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

    }

Удачи.

0 голосов
/ 29 декабря 2010

Ваш частичный должен быть в форме AJAX

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...