繁体   English   中英

我可以使用匿名类型作为Razor模型吗?

[英]Can I use anonymous types as a Razor model?

我有一台C#服务器,在其中使用RazorEngine NuGet库手动呈现一些Razor视图。 提供给视图的模型是匿名类型,其创建方式如下:

new[] { Foo = "Bar", Baz = "Example" }

由于我呈现模板的方式,Visual Studio无法识别我的模型。 这意味着即使它可以正常工作,Visual Studio仍认为这样的代码无效:

<p>@Model.Foo</p>

为了纠正这一点,我发现了@model指令,但这似乎仅适用于作为指定模型的类。 例如,这些都被视为无效:

@model { string Foo, string Baz }
@model (string Foo, string Baz)

有什么办法可以让@model使用匿名类型? 另外,命名元组也将使编译器满意,因为我从不从模板更新模型的任何字段。

是的,可以,但是我通常不会这样做,因为强类型视图模型具有其优势。

像这样创建模型:

dynamic model = new ExpandoObject();
model.Foo = "Bar";
model.Baz = "Example";

然后您可以在视图中访问它,没问题

<h1>@Model.Foo</h1>
<h2>@Model.Baz</h2>

注意 默认情况下, RazorPage<T>被定义为RazorPage<dynamic> ,因此无需声明@model dynamic

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM