Razor@模型生成的代码无效

本文关键字:代码 无效 模型 Razor@ | 更新日期: 2023-09-27 18:00:28

当我试图在Razor部分视图中添加@model指令时,遇到了一个奇怪的问题。

使用以下行时:

@model Tuple<int, Tuple<int, string, string>, int>

生成以下类声明:

public class _Page_views_forms_controls__filter_edit_cshtml : System.Web.Mvc.WebViewPage<Tuple<int {

然后抛出,因为它在语法上无效。

我尝试过将类型名称包装在括号中,删除类型参数之间的空格,更改类型参数(删除嵌套的Tuple),并将其更改为@inherits System.Web.Mvc.WebViewPage<...>,所有这些似乎都没有效果。

我以前从未遇到过这样的事情。是什么导致了这种行为?

Razor@模型生成的代码无效

要扩展我的评论,您可以创建一个视图模型类,如下所示:

public class FooViewModel
{
    public Tuple<int, Tuple<int, string, string>, int> Data { get; set; }
}

然后在您的控制器中,创建该视图模型的新实例并将其传递给视图:

@model FooViewModel
@{
    var data = Model.Data;
}

这将有助于Razor引擎在编译视图时发挥作用。