gpt4 book ai didi

asp.net-mvc - MVC @model 含义

转载 作者:行者123 更新时间:2023-12-04 21:05:05 25 4
gpt4 key购买 nike

在 MVC5 中,@model 是什么? , @html@using意思是,为什么以及何时我们通常使用 ( @ )后面跟着哪个词?

例如:@model MVC_Project2.Models.stufftable写在re.cshtml页面的第一个
stufftable 是一个属于 users 的表,用于创建新用户,以下代码编写在同一页面中以创建两个带有两个标签的文本框和两个标签以显示登录页面:

@using (Html.BeginForm())
{
<div>
@Html.LabelFor(u => u.stuffname)
@Html.TextBoxFor(u => u.stuffname)
</div>
<div>
@Html.LabelFor(u => u.stuffpass)
@Html.PasswordFor(u => u.stuffpass)
</div>
<input type="submit" />
}

最佳答案

在 .cshtml 文件中,其中的所有内容都是 HTML。所以它会完全按照它写的那样写出来。

换句话说,如果你刚刚输入

model blah

没有 @那么当你渲染 View 时,它实际上会显示 model blah在页面上。
@ sign 是一个指令,告诉 Razor 引擎后面是代码,它应该编译它而不是简单地将其写入输出。

所以当你输入
@model blah

这是由razor编译的,告诉Razor引擎模型的类型是'blah',这样当你使用关键字 Model (注意大写 M 并且您还必须使用 @ 符号)它将引用您定义的模型(在本例中为 blah )。

所以如果你写
@model blah

@Model.Foo

然后,如果 blah.Foo 包含数字 14,它会将数字 14 写入输出。正如您可能已经猜到的那样, @符号有很多用途,所以如果你说 @Model.Foo你实际上在做类似 Response.Write(Model.Foo) 的事情.

一般来说, @符号用于从 HTML 模式转换到代码模式,就像使用旧的 ASPX 代码块 <% ... %> ,但是 razor 更聪明一些,并且可以理解代码的上下文,因此它可以推断出代码大部分时间结束的位置,因此不需要像过去那样使用结束括号。
@using就像在 C# 代码中一样,它是 using 语句,用于在 block 结束后处理一次性资源。 Razor 在许多情况下使用这种技术来表示代码块的结束。因此,例如说:
@using(Html.BeginForm()) {
....
}
Html.BeginForm助手返回一个定义 IDisposable 的对象。接口(interface),当 using 语句结束时被调用,所以 BeginForm()在这种情况下输出 <form>标签,当 IDisposable.Dispose()在 using 语句的末尾调用方法,它输出 </form> .这是一种用于包装输出标签的其他代码的技术,以便它可以正确关闭它们的 html。
@Html也只是 C#。但是,它调用了 HtmlHelper 对象(Razor 在支持 View 的“ViewPage”类中定义了一个名为 Html 的对象,该 Html 对象的类型为 HtmlHelper)并且它调用了已在 HtmlHelper 对象上定义的各种 C# 扩展方法。如果您不知道 C# 扩展方法是什么,它是一种无需重写对象即可扩展对象的方法,这是更高级的 C#。可以这么说,像 @Html.TextBox()调用 HtmlHelper.TextBox() 类型的方法, 所以它只是一个您可以调用的 C# 方法,但这些方法是专门作为帮助器创建的,以帮助您创建 HTML。

这真的有很多,如果你不理解我讨论过的概念,那么你真的需要更多地了解 C# 和/或 HTML,因为你可能会摸不着头脑。

关于asp.net-mvc - MVC @model 含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27681414/

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