簡體   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