Mag*_*pie 4 c# razor asp.net-mvc-3
我对这个感到困惑.我正在使用razor和MVC 3,我对一个动作的一个视图有问题.
[HttpGet]
[ActionName("Unsubscribe")]
public ActionResult UnsubscribeGet(string maskedId)
{
return View("Unsubscribe", maskedId);
}
Run Code Online (Sandbox Code Playgroud)
Unsubscribe.cshtml视图位于正确的视图文件夹中.
路线是
routes.MapRoute(
"", // Route name
"Unsubscribe/{maskedId}", // URL with parameters
new { controller = "Account", action = "Unsubscribe" });
Run Code Online (Sandbox Code Playgroud)
当转到以下URL"/ 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 } );
}
Run Code Online (Sandbox Code Playgroud)
虽然这现在有效但我仍然不知道为什么之前没有用.我将我的视图设置为在构建时编译,因此没有编译器错误.
我很想知道这里发生了什么.
Pau*_*yng 12
您使用的View方法的重载需要两个字符串.它不会将第二个字符串解释为模型,它将其解释为主页面名称:
protected internal ViewResult View(
string viewName,
string masterName
)
Run Code Online (Sandbox Code Playgroud)
如果您这样称呼它,它将工作:
return View("Unsubscribe", (object) maskedId);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3825 次 |
| 最近记录: |