2017-01-10 12 views
-2

В _Layout.cshtml, у меня есть часть кодаПочему я не могу выполнить подзапрос для частичного просмотра для каждого запроса?

<div> 
     @Html.Action("BestStudent", "Student") 
</div> 

В Student Controller я создал метод BestStudent ниже

public class StudentController : Controller 
{ 
    private UniversityInitial dbAllStudents = new UniversityInitial(); 

    [ChildActionOnly] 
    public ActionResult BestStudent() 
    { 
     var best = dbAllStudents.Students 
      .Where(s => s.LastName.StartsWith("M")&s.FirstName.StartsWith("E") & s.City.StartsWith("T")); 
     return PartialView("_BestStudent", best); 
    } 
} 

В Views/Shared папке Я создал Partial View с именем _BestStudent.cshtml сильно типизированных для модели Студента, как показано ниже:

@model UniversityApp.Models.Student 

<h3 class="text-danger">Student of the year</h3> 
Name : @Model.FirstName 
Last Name : @Model.LastName 
City: @Model.City 

Построение преуспевает, но когда я его запускаю, я получил один e xception как:

«Ошибка при выполнении запроса ребенка для обработчика«System.Web.Mvc.HttpHandlerUtil ...

и точка останова в строке кода ниже:

<div> 
    @Html.Action("BestStudent", "Student") 
</div> 

Итак, я думаю, что здесь что-то не так, но я не могу понять, что такое

+0

то, что у делать именно? скажите мне свой сценарий – Valkyrie

+0

Поскольку ваш запрос возвращает коллекцию 'Student', а не один« Student », который требуется вашему представлению (поэтому генерируется исключение). Измените запрос на добавление '.FirstOrDefault()' –

+0

также поместили полную ошибку не только в его состав – Valkyrie

ответ

1

Обновление

Устранить запрос, как показано ниже:

var best = dbAllStudents.Students 
         .Where(s => s.LastName.StartsWith("M")&s.FirstName.StartsWith("E") & s.City.StartsWith("T")).FirstOrDefault(); 
return PartialView("_BestStudent", best); 

Заслуга @StephenMuecke