【发布时间】:2012-01-09 13:52:30
【问题描述】:
我对这个感到困惑。我在 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" });
当转到以下网址“/Unsubscribe/db94fddb”时,该操作会触发,然后在尝试查找视图时显示以下错误。
未找到“取消订阅”视图或其主视图,或者没有视图引擎支持搜索到的位置。搜索了以下位置:
~/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 } );
}
虽然这现在有效,但我仍然不知道为什么它以前不起作用。我将视图设置为在构建时编译,因此没有编译器错误。
我很想知道这里发生了什么。
【问题讨论】:
标签: c# asp.net-mvc-3 razor