Asp.net mvc 4 不了解ASP.NET中视图的工作方式
我正在努力理解ASP.NET MVC4 在HomeController中,我的代码似乎调用了一个视图Asp.net mvc 4 不了解ASP.NET中视图的工作方式,asp.net-mvc-4,Asp.net Mvc 4,我正在努力理解ASP.NET MVC4 在HomeController中,我的代码似乎调用了一个视图 public ViewResult RsvpForm() { return View(); } 这里是景色 @model PartyInvites.Models.GuestResponse @{ Layout = null; } <!DOCTYPE html> <html> <head>
public ViewResult RsvpForm()
{
return View();
}
这里是景色
@model PartyInvites.Models.GuestResponse
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>RsvpForm</title>
</head>
<body>
<div>
@using (Html.BeginForm()) {
@Html.ValidationSummary()
<p>Your name: @Html.TextBoxFor(x => x.Name) </p>
<p>Your email: @Html.TextBoxFor(x => x.Email)</p>
<input type="submit" value="Submit RSVP" />
}
</div>
</body>
</html>
@model PartyInvites.Models.GuestResponse
@{
布局=空;
}
RsvpForm
@使用(Html.BeginForm()){
@Html.ValidationSummary()
您的姓名:@Html.TextBoxFor(x=>x.name)
您的电子邮件:@Html.TextBoxFor(x=>x.email)
}
我不明白的是
当我调用带有空参数的视图时,视图如何访问数据
这是为了什么:@model partyVites.Models.GuestResponse
x=>x.Name
发生了什么。我相信这是一个匿名函数,但我不理解它的必要性。我看不出x是从哪里来的(它没有出现在上面的代码中。它是全局的还是什么的?)
为了帮助回答问题,我做了很多PHP和web方面的工作,我掌握了C#和Razor的大部分知识,所以我假设我只是太笨了,或者这是ASP的一个特别之处
谢谢。x=>x。Name是一个匿名函数,它从未执行过 事实上,Html助手将其转换为
表达式。这类似于JavaScript中的函数,或者在JavaScript中传递函数(Func是表达式包装,允许访问函数的执行树-基本上是关于函数本身的大量元数据)
一旦进入html帮助程序,TextBoxFor
,就会有大量额外的处理和表达式树与模型元数据的比较。属性被考虑在内,以及用于构建HTML的所有内容(如[Required]或[Scaffold])
控制器不传入数据,但视图声明了一个强模型
在视图中,@model partyVites.Models.GuestResponse
并不意味着实际传入了任何数据。它只是将视图声明为强类型,并使模型元数据可供Intellisense和视图编译器使用。控制器/视图关系比简单的函数调用复杂得多,这与大多数PHPMVC框架(或基本PHP框架)不同。控制器传入的数据与所有元数据和控制器上下文等一起包装到页面和ViewData中。这些是您不理解的基本概念。我建议从这里开始:视图不应该接收任何数据,除非您显式地将模型传递给视图,如soreturnview(model)代码>谢谢@user1477388,那么如果x没有收到任何数据,它从哪里来?(网站运行时没有错误)。@Qerti Mporta。我已经运行了一个教程,并做了大量的阅读,但我继续找出这些问题。我希望得到一些提示。当然,有人可以说几句“x”是从哪里来的。我明白你的意思了。将x视为占位符。里面不必有任何东西。如果将模型传递给视图;那么x将有一个值。