1

Мне нужно обновить div с помощью PartialView с помощью Ajax.BeginForm. Я сделал это более десятка раз в MVC4, и он работал безупречно. В MVC5, он не работает, хотя :(MVC5 Ajax PartialView

Вот шаги, которые я взял:

  • Создать новый проект «PartialAjax» в Visual Studio 2013 (ASP.NET Web Application/MVC)
  • правой кнопкой мыши Views/Главная и Добавить вид> Проверить «Создать как частичный вид»> назовите его «_test»
  • код для этой точки зрения _Test.cshtml:

    <p>From now on I'm gonna change my life: @DateTime.Now.ToString()</p> 
    
  • Редактирование Views/Home/Index.cshtml вид:

    @{ 
          ViewBag.Title = "Home Page"; 
    } 
    @using (Ajax.BeginForm("ChangeLife", "Home", null, new AjaxOptions() { UpdateTargetId = "test", HttpMethod = "Post" }, null)) 
    { 
        <input type="submit" value="Start" /> 
    } 
    
    <div id="test"> 
        @Html.Partial("_Test") 
    </div> 
    
  • Поместите это в HomeController:

    public ActionResult ChangeLife() 
         { 
          return this.PartialView("_Test"); 
         } 
    

Если я нажимаю Управление пакетами NuGet, JQuery и Microsoft JQuery Ненавязчивый проверки являются установленный по умолчанию.

+0

Наличие пакетов NuGet не означает, что скрипты загружены; какие пакеты загружены в ваш _Layout? –

+0

@ Scripts.Render ("~/bundles/modernizr"), @ Scripts.Render ("~/bundles/jquery"), @ Scripts.Render ("~/bundles/bootstrap") –

+0

Yep; ненавязчивый сценарий ajax включен в пакет '' ~/bundles/jqueryval'', поэтому вам нужно добавить его либо к макету, либо к отдельным представлениям. –

ответ

6

Мне пришлось установить Microsoft jQuery Unobtrusive Ajax и отобразить javascript-пакеты для jqueryval (существующий, но не визуализированный) и добавить новый для файлов сценария unobtrusive.ajax.

новый пакет в классе BundleConfig:

bundles.Add(new ScriptBundle("~/bundles/jqueryajax").Include(
        "~/Scripts/jquery.unobtrusive*")); 

добавлены визуализации методы для двух пучков в _Layout.cshtml (под JQuery визуализации):

@Scripts.Render("~/bundles/jqueryval") 
@Scripts.Render("~/bundles/jqueryajax") 
+0

yep, вот и все. Спасибо! –