2013-02-14 2 views
1

У меня есть одна из этих досадных проблем, которые очень просты и все же я не могу найти проблему.asp.net mvc не нашел мое мнение

У меня есть простой «тестовый» контроллер. вот код:

public class testController : Controller 
{ 
    // 
    // GET: /test/ 

    public ActionResult Index(int id) 
    { 
     ItemModel item = null; 
     item = CommonLib.ReturnFullItem(id); 

     return View("~/Views/Emails/ItemRecordedEmail", item); 
    } 

} 

и у меня есть папка /Просмотров/EMAILS/ с ItemRecordedEmail.cshtml вид внутри. Но я получаю следующее сообщение об ошибке:

Точка зрения «/ Views/Письмо/ItemRecordedEmail» или его хозяин не был найден или нет вида двигателя не поддерживает искомых местоположение. Поиск следующие места:/Views/Письма/ItemRecordedEmail

, когда я переместить ItemRecordedEmail.cshtml в некоторой общей папки и изменить код соответственно все, кажется, работает хорошо. Любые идеи, что я делаю неправильно?

EDIT: Я изменил путь до '~/Просмотры/Письма. Это был оригинальный путь, я случайно оставил его после всех попыток, которые я сделал. По-прежнему та же проблема с тем же сообщением об ошибке, только на этот раз он ищет его в папке «~/Views/Emails».

+2

просто попробовать с 'вернуться View ("~/Просмотров/EMAILS/ItemRecordedEmail", пункт);' –

+0

@ user739809 проверить мой ответ, а также, пожалуйста, попробуйте поставить полная ошибка браузера в вопросе в следующий раз. –

+0

Вместо того, чтобы возвращать View, я бы сделал перенаправление на действие. Я предполагаю, что электронные письма - это имя контроллера. –

ответ

9

При использовании тильды синтаксис, чтобы обеспечить полный путь к вашему мнению, вы должен предоставить расширение файла представления, поскольку это обходит механизм внутреннего поиска механизма просмотра для поиска представлений. Так оно и должно быть

return View("~/Views/Emails/ItemRecordedEmail.cshtml", item); 

Ссылка: Professional ASP.NET MVC 4

+0

предоставите ссылку msdn для этого, пожалуйста, для получения полного ответа. –

+0

у вас уже есть +1 от меня. –

+1

Спасибо, искали ссылку MSDN, но не смогли найти. Однако это упоминается в книге ASP.NET MVC Скотта Хансельмана. –

2

Я думаю, что вы имели в виду, чтобы использовать этот код:

public ActionResult Index(int id) 
    { 
     ItemModel item = null; 
     item = CommonLib.ReturnFullItem(id); 

     return View("ItemRecordedEmail", item); 
    } 

или это один:

public ActionResult Index(int id) 
    { 
     ItemModel item = null; 
     item = CommonLib.ReturnFullItem(id); 

     return View("~/Views/Emails/ItemRecordedEmail.cshtml", item); 
    } 

Вам нужно относительно добавить взгляд на пути, и он будет искать в area/test/view.html затем area/shared/view.html затем к остальной части пути без области. Подобно путям, представленным в сообщении об ошибке, полученном с этим сообщением об ошибке.

Edit: если у Вас есть вид использования этого

return View("~/Views/Emails/ItemRecordedEmail.cshtml", item); 

или если у вас есть частичный вид:

return Partial("~/Views/Emails/ItemRecordedEmail.cshtml", item); 
Смежные вопросы