Ошибка: представление или его мастер не найдены. В следующих местах были найдены - PullRequest
2 голосов
/ 05 января 2012

У меня проблема с конкретным действием контроллера, не отображающим представление.

Вот действие контроллера:

public ActionResult DisplayStudents(string id)
        {
            var name = (from p in data.StudentTable.Where(a => a.ClassNumberID == id)
                                  group n by n.StudentName into g
                                  select g.Key).First();

            return View(name);
        }

Имя контроллера - «Студент», и представление присутствует в«Views / Student / DisplayStudents.aspx»

Почему я все еще получаю эту ошибку:

Server Error in '/' Application.
--------------------------------------------------------------------------------

The view 'Thomas Guenn' or its master was not found. The following locations were searched:
~/Views/Student/Thomas Guenn.aspx
~/Views/Student/Thomas Guenn.ascx
~/Views/Shared/Thomas Guenn.aspx
~/Views/Shared/Thomas Guenn.ascx 

Кроме того, почему он ищет «Thomas Guenn.aspx» вместо «DisplayStudents».aspx "?

Вот моя страница просмотра:

>"%>

DisplayStudents Студенты перечислены ниже:

<table>

<% foreach (var item in Model) { %>
     <tr>
        <td>
            <%= Html.Encode(item)%>
        </td>
    </tr>

<% } %>

</table> </body> </html>

Ответы [ 2 ]

5 голосов
/ 05 января 2012

Поскольку ваш View(name); вызов вызывает перегрузку View(string viewName).Если вы хотите передать строку как модель, попробуйте использовать

return View((object)name);

.

Если это не сработает, попробуйте явно указать viewName, используя перегрузку View(string viewName, object model), например так:

return View("DisplayStudents", name);

UPD: Глядя на ваш код представления, я могу сказать, что он также не вернет ожидаемую страницу: вы возвращаете один элемент строки как модель из контроллера, ноВаш DisplayStudents.aspx ожидает коллекцию.Вам также следует либо исправить свой вид (чтобы он принимал одну строку в качестве модели), либо вернуть IEnumerable<string> из контроллера - удалив .First() из выражения LINQ для name.

3 голосов
/ 05 января 2012

Это происходит потому, что перегрузка ожидает объект, если это данные, и строку, если вы передаете имя представления в.

Используйте это вместо:

return View((object)name);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...