可以';即使它';是的,它;It’我不想找正确的分机号

本文关键字:It 是的 可以 我不想 | 更新日期: 2023-09-27 18:19:45

我对此感到困惑。我在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
~/视图/帐户/取消订阅.ascx
~/Views/Shared/Unsubscribe.aspx
~/Views/Shared/Unsubscribe.ascx
~/Views/Account/db94fddb.master
~/Views/Shared/db94fddb.master
~/Views/Account/db94fddb.cs.html
~/Views/Account/db94fddb.vbhtml
~/Views/Shared/db94fddb.cs.html
~/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 } );
}

虽然这现在有效了,但我仍然不知道为什么它以前不起作用。我的视图设置为在构建时编译,所以没有编译器错误。

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

可以';即使它';是的,它;It’我不想找正确的分机号

您使用的View方法的重载需要两个字符串。它不将第二个字符串解释为模型,而是将其解释为主页面名称:

protected internal ViewResult View(
    string viewName,
    string masterName
)

如果你这样称呼它,它会起作用:

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