gpt4 book ai didi

c# - @model 关键字在 ASP.NET MVC View 中有什么作用?

转载 作者:行者123 更新时间:2023-11-30 13:37:31 26 4
gpt4 key购买 nike

我对 @model 语句如何工作到 cshtml View 有一些疑问。在我的代码中,我有这样的东西:

@model MyCorp.EarlyWarnings.WebInterface.Models.HomePageModel

那么这到底是做什么的呢?

我认为我将此 HomePageModel 作为当前 View 的模型包含在内,因此作为此类实例的对象包含我必须在此 View 中显示的所有信息,它的解释是否正确还是我遗漏了什么?

另一个疑问是:谁填充了这个模型?它是由 View 的特定 Controller 填充的吗?

最佳答案

你必须记住的是,Razor View 引擎将你的 CSHTML 页面编译成普通的 C# 类。

所以当你定义

@model Something

Razor 实际上产生了一些东西

public class _Path_To_View_cshtml : WebViewPage<Something>
{
// mcguffins to make everything happen
}

然后在该类中,所有内容都从您的 CSHTML 页面“反转”。所以当你写

<div>@Model.Foo</div>

在你的 CSHTML 中,这将被翻译成类似的东西

WriteLiteral("<div>");
Write(Model.Foo);
WriteLiteral("</div>");

关于从何处调用 View 的问题的第二部分,任何 Controller 操作都可以通过在结果中提供 View 路径来调用 View (至少在同一应用程序中):

return this.View("~/path/to/view", someModel);

默认是如果你返回

return this.View(someModel);

使用的路径将是 ~Views/ControllerName/ActionName.cshtml

关于c# - @model 关键字在 ASP.NET MVC View 中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22555767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com