2

@Ajax.ActionLink работает как обычная ссылка, не могу найти причину проблемы...

BundleConfig:

 public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-3.1.0.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryuno").Include(
                "~/Scripts/jquery.unobtrusive-ajax.js"));
......

И код во View:

@Ajax.ActionLink("Комментарии", "Comments", new { rev.Id },
            new AjaxOptions { UpdateTargetId = "Comments" })
cache
  • 1,250
Macro
  • 113
  • Вы скрипт добавили в бандл, а отрендерить во view его случайно не забыли? – Andrew B Aug 27 '16 at 11:05
  • Стандартно выведено: @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr") – Macro Aug 27 '16 at 11:11
  • По описанию очень похоже на то, что скрипт не подгружается. Либо опишите детальнее – Andrew B Aug 27 '16 at 11:27
  • C BundleConfig в общем так и не разобрался, просто скрипты привизал к старинице. – Macro Aug 27 '16 at 13:17
  • Андрей, заранее буду благодарен за помощь. Как закончить строку " comment.GuestbookReviewId" чтоб записывала ID страницы на которой размещена форма. – Macro Aug 27 '16 at 14:37
  • public ActionResult CommentCreate([Bind(Include = "Id,Name,Message,DateAdded,GuestbookReviewId")] GuestbookComment comment) { comment.GuestbookReviewId = comment.DateAdded = DateTime.Now; comment.GuestbookReviewId = db.SaveChanges(); return RedirectToAction("Index"); } – Macro Aug 27 '16 at 14:38
  • Я, конечно, могу предположить что комментариев вряд ли будет много и предложить назначить автоинкрементное поле в базе типа int. Но я же не знаю какие у вас поля, как много комментариев вы ожидаете и что вы планируете с ними делать. Это уже другой вопрос получается. – Andrew B Aug 27 '16 at 15:48
  • Есть контент, к нему идут комментарии. Все это уже работает на тестовых данных. А вот форма добавления комментария, чтоб она привязывалась к ID контента сделать не могу. Примеры по Select уйма, весь инет именно примером Select усыпан. А так чтоб GuestbookReviewId автоматически генерировал ID страницы с который пишется комментарий найти не могу... – Macro Aug 27 '16 at 16:01

2 Answers2

1

У самого была такая проблема недавно - не мог подгрузить AJAX к Razor. Вот решение:

BundleConfig.cs

public static void RegisterBundles(BundleCollection bundles)
        {
            //AJAX
            bundles.Add(new ScriptBundle("~/bundles/ajax").Include(
                        "~/Scripts/jquery.unobtrusive-ajax.js"));

        }

_Layout.cshtml

<head>
      @Scripts.Render("~/bundles/ajax")
</head>
1
  1. Проверьте, что в Web.config задан ключ UnobtrusiveJavaScriptEnabled и установлен в true. Категория appSettings
<appSettings>
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  1. Проверьте, что на страницу подключены следующие файлы скриптов:
    • jquery
    • jquery.unobtrusive-ajax

Сделать можно следующим образом:

  1. Проверьте наличие файлов в связке, например
bundles.Add(new ScriptBundle("~/Scripts/jquery")
                .Include("~/Scripts/jquery-3.1.1.js",
                         "~/Scripts/jquery.unobtrusive-ajax.min.js"));
  1. Проверьте подключение самой связки на страницу, например

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


Если в папке Scripts не наблюдается данных файлов или вы создаете проект с нуля, то воспользуйтесь командой Install-Package Microsoft.jQuery.Unobtrusive.Ajax, которая установит необходимые пакеты вместе с зависимостями.