我对这个有些困惑。我正在使用MVC 3的razor,我在一个操作中有一个视图问题。
[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”时,操作会触发,然后当它尝试查找视图时会显示以下错误。
找不到视图“Unsubscribe”或其主控件,或者没有视图引擎支持已搜索的位置。搜索了以下位置:
~/Views/Account/Unsubscribe.aspx
~/Views/Account/Unsubscribe.ascx
~/Views/Shared/Unsubscribe.aspx
~/Views/Shared/Unsubscribe.ascx
~/Views/Account/db94fddb.master
~/Views/Shared/db94fddb.master
~/Views/Account/db94fddb.cshtml
~/Views/Account/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 } );
}
尽管现在已经可以工作了,但我仍然不知道之前为什么不行。我的视图设置为构建时编译,所以没有编译器错误。
我很想知道这里发生了什么。