Я запутался в этом. Я использую бритву с MVC 3, и у меня проблема с одним видом на одно действие.
[HttpGet]
[ActionName("Unsubscribe")]
public ActionResult UnsubscribeGet(string maskedId)
{
return View("Unsubscribe", maskedId);
}
Представление Unsubscribe.cshtml находится в правильной папке представления.
Маршрут
routes.MapRoute(
"", // Route name
"Unsubscribe/{maskedId}", // URL with parameters
new { controller = "Account", action = "Unsubscribe" });
При переходе по следующему URL-адресу "/ Unsubscribe / db94fddb" запускается действие, и при попытке найти представление появляется следующая ошибка.
Представление «Отписаться» или его мастер не найдены, или механизм просмотра не поддерживает найденные местоположения Были найдены следующие местоположения:
~ / Views / Account / Unsubscribe.aspx
~ / Views / счета / Unsubscribe.ascx
~ / Views / Shared / Unsubscribe.aspx
~ / Views / Shared / Unsubscribe.ascx
~ / Views / счета / db94fddb.master
~ / Views / Shared / db94fddb.master
~ / Views / счета / db94fddb.cshtml
~ / Views / счета / db94fddb.vbhtml
~ / Views / Shared / db94fddb.cshtml
~ / Views / Shared / db94fddb.vbhtml
Обратите внимание, что при поиске Unsubscribe он не ищет расширение cshtml, а при поиске db94fddb
Это происходит только с этим видом, совершенно не понимая, как это исправить.
** РЕДАКТИРОВАТЬ **
Нашел,
Я использовал System.String в качестве модели. По какой-то причине это привело к взрыву.
Я поменял его на @model UnsubscribeViewModel
[HttpGet]
[ActionName("Unsubscribe")]
public ActionResult UnsubscribeGet(string maskedId)
{
return View("Unsubscribe", new UnsubscribeViewModel { MaskedId = maskedId } );
}
Хотя теперь это работает, я до сих пор не понимаю, почему это не сработало раньше. У меня установлены представления для компиляции при сборке, поэтому ошибок компиляции не было.
Мне бы очень хотелось узнать, что здесь происходит.