2010-12-29 4 views
12

Я пытаюсь загрузить частичный вид в div из вызывающего вида, однако частичный просмотр загружается на новую страницу. У него мало кода, и я пробовал различные пути от других сообщений, но он по-прежнему загружается на новую страницу. Поэтому я думаю, что я мог бы потерять что-то фундаментальное.Загрузить частичный вид в 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> 
+2

принять один ответ. –

ответ

0

Ваши частичные должно быть остроумие гин форме АЯКС

+1

Я проверяю Request.IsAjaxRequest() в контроллере и возвращается как false. Разметка формы - это.

user415394

24

Пара замечаний о коде:

  • 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

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

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

только после того, как MicrosoftMvcAjax.js линии.

+1

Я боролся с этим, и этот ответ исправил мою проблему. Спасибо! – Stephane

1

Я думаю, вы должны использовать <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> 

    } 

удачи ,

Смежные вопросы