c# - 使用字符串 ID 时未找到视图
问题描述
我有这个方法,HomeController
去的时候效果很好,support/home/chat
但是如果我去/support/home/chat?id=4
它会给出错误:
InvalidOperationException:未找到视图“4”
[Area("Support")]
public IActionResult Chat(string? ID)
{
return View(ID);
}
这是我在启动时的路由
app.UseEndpoints(endpoints =>
{
endpoints.MapAreaControllerRoute(
name: "Support",
areaName: "Support",
pattern: "Support/{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
解决方案
Controller.View 有很多重载(https://docs.microsoft.com/en-us/dotnet/api/system.web.mvc.controller.view?view=aspnet-mvc-5.2)
让我们专注于
- 查看(字符串路径)
- 视图(对象模型)
当您想要使用具有给定路径且没有模型的视图时使用第一个,当您想要使用带有模型的默认视图时使用第二个。在您的情况下,您想使用第二个,但您的模型是字符串类型,因此您实际上使用的是第一个。
你所要做的就是:
return View((object)ID);
推荐阅读
- wso2 - 在 WSO2 EI 6.2 中捕获端点超时
- python - 使用 Python 或 XSLT 将复杂的 XML 转换为 CSV
- r - R中的“或”与“任何”函数?
- python - 需要根据两行的差异往df中插入行
- git - 将 Gerrit 中的当前补丁集重新定位到另一个分支
- azure-functions - 带有 HTTP 触发器的 Azure 函数返回 204 但不执行函数
- sql - 如何比较两个结构相同的数据框以计算行差异
- html - 浏览器响应式设计模式和桌面缩放
- ruby-on-rails - 在 Rails (OAuth) 中来自 Twitter 的额外字段
- google-cloud-platform - Stackdriver 停止从 GKE 容器记录日志