C# Can';即使是';就在那里,它';It’他不是在找正确的分机

C# Can';即使是';就在那里,它';It’他不是在找正确的分机,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,我对这个感到困惑。我在MVC3中使用razor,我在一个动作上有一个视图问题 [HttpGet] [ActionName("Unsubscribe")] public ActionResult UnsubscribeGet(string maskedId) { return View("Unsubscribe", maskedId); } Unsubscribe.cshtml视图位于正确的视图文件夹中 路线是 routes.MapRoute(

我对这个感到困惑。我在MVC3中使用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时查找cshtml扩展名

这只会发生在这个视图中,完全不知道如何修复它

**编辑**

找到了

我使用System.String作为模型。因为某种原因导致它爆炸了

我把它换成了
@model UnsubscribeViewModel

[HttpGet]
[ActionName("Unsubscribe")]
public ActionResult UnsubscribeGet(string maskedId)
{
    return View("Unsubscribe", new UnsubscribeViewModel { MaskedId = maskedId } );
}
虽然这现在起作用了,但我仍然不知道为什么它以前不起作用。我将视图设置为在构建时编译,因此没有编译器错误

我很想知道这里发生了什么。

您使用的过载需要两个字符串。它不会将第二个字符串解释为模型,而是将其解释为母版页名称:

protected internal ViewResult View(
    string viewName,
    string masterName
)
如果您改为这样称呼它,它会起作用:

return View("Unsubscribe", (object) maskedId);

甚至没有考虑过负荷。谢天谢地,在4中命名了参数。谢谢你的回答!感谢上帝的回答。这个问题快把我逼疯了。