2016-06-29 2 views
0

я смотрю видео Скотт Аллен на Pluralsight сайте, именно я говорю об этом module:ASP.NET MVC Ajax Скотт Аллен не работает

AJAX:

Так я создал точно такой же пример, как показано на видео, но он не работает, я понятия не имею, почему и в течение часа, глядя на это, вот мой код:

At BoundleConfig.cs file: 
    bundles.Add(new ScriptBundle("~/bundles/otf").Include(
      "~/Scripts/jquery-{version}.js", 
      "~/Scripts/jquery-ui-{version}.js", 
      "~/Scripts/jquery.unobtrusive-ajax.min.js", 
      "~/Scripts/jquery.validate*" 
      )); 

в файле Web.config в разделе AppSettings я добавил :

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

И здесь мы идем:

public ActionResult Review(string searchString) 
    { 

     var model = _repository.StartDs; 


     if (!String.IsNullOrEmpty(searchString)) 
     { 
      model = model.Where(x => x.FirstName.Contains(searchString)); 
     } 




     if (Request.IsAjaxRequest()) 
     { 
      return PartialView("_Review", model); 
     } 

     return View(model); 

    } 

Review.cshtml файл:

@model IEnumerable<nauka.Models.StartData> 
@using(Ajax.BeginForm(
       new AjaxOptions 
       { 
        HttpMethod = "get", 
        InsertionMode = InsertionMode.Replace, 
        UpdateTargetId = "girlsList" 
       })) 
{ 
    <input type="search" name="searchString"/> 
    <input type="submit" value="Znajdź" /> 

} 
    @Html.Partial("_Review", Model) 

_Review.cshtml файл:

@model IEnumerable<nauka.Models.StartData> 




<div id="girlsList"> 
    <table style="width:100%"> 

     <tr> 

      <th>ID</th> 
      <th>Imię</th> 
      <th>Nazwisko</th> 
      <th>Wzrost</th> 
      <th>Rozmiar</th> 
      <th>Akcje</th> 



     </tr> 


     @foreach (var item in Model) 
     { 

      <tr> 
       <td>@item.Id</td> 
       <td>@item.FirstName</td> 
       <td>@item.LastName</td> 
       <td>@item.Height</td> 
       <td>@item.TitsSize</td> 
       <td>@Html.ActionLink("Usuń", "Delete", new { id = item.Id })</td> 
      </tr> 



     } 

    </table> 

</div> 

Я проверил его, этот фрагмент в мой метод действия:

if (Request.IsAjaxRequest()) 
     { 
      return PartialView("_Review", model); 
     } 

никогда не выполняется, что означает, что запрос не признан AjaxRequest, вопрос в том, почему? Я редактировал эту строку и вставить

return View("Index"); 

так shloud перенаправить меня к индексу сайта, но это не так, я доказал, что AjaxRequest не выполняется. Я понятия не имею, что здесь отсутствует, я сделал то же самое, что и на показанном видео.

Над моим файлом _Layout.cshtml который autmatically добавляется к каждой странице просмотра:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>@ViewBag.Title - My ASP.NET Application</title> 
    @Styles.Render("~/Content/css") 
    @Scripts.Render("~/bundles/modernizr") 


</head> 
<body> 
    <div class="navbar navbar-inverse navbar-fixed-top"> 
     <div class="container"> 
      <div class="navbar-header"> 
       <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
       </button> 
       @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" }) 
      </div> 
      <div class="navbar-collapse collapse"> 
       <ul class="nav navbar-nav"> 
        <li>@Html.ActionLink("Home", "Index", "Home")</li> 
        <li>@Html.ActionLink("About", "About", "Home")</li> 
        <li>@Html.ActionLink("Contact", "Contact", "Home")</li> 
        <li>@Html.ActionLink("Dodaj", "Add", "Home")</li> 
        <li>@Html.ActionLink("Przegladaj", "Review", "Home")</li> 
        <li>@Html.ActionLink("Filtruj", "FilterTest", "Home")</li> 


       </ul> 
       @Html.Partial("_LoginPartial") 
      </div> 
     </div> 
    </div> 
    <div class="container body-content"> 
     @RenderBody() 
     <hr /> 
     <footer> 
      <p>&copy; @DateTime.Now.Year - My ASP.NET Application</p> 
     </footer> 
    </div> 

    @Scripts.Render("~/bundles/otf") 
    @RenderSection("scripts", required: false) 
</body> 
</html> 
+0

Если вы не нажимаете код внутри 'if (Request.IsAjaxRequest()), то это означает, что вы делаете обычную переадресацию. Убедитесь, что сценарии правильно отображаются в представлении (вы показали пакет, но не указали, где их включить в представление) –

+0

В нижней части файла _Layout.cshtml: @ Scripts.Render ("~/bundles/otf ") –

+0

добавить все файлы jquery refrences на страницу бритвы? –

ответ

0

... ух решена !!

Я не добавлял

jquery.unobtrusive-ajax.min.js библиотеку к моему решению с помощью пакета установщика NuGet. Но когда я добавил это раньше в BoudleConfig (путь "~/Scripts/jquery.unobtrusive-ajax.min.js",), почему он не кричал, что эта библиотека отсутствует в моем проекте в Visual ?? ! Это вызвало множество осложнений.

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