Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果模型强绑定到视图,是否需要将模型显式传递到视图?_C#_Asp.net Mvc_Model View Controller - Fatal编程技术网

C# 如果模型强绑定到视图,是否需要将模型显式传递到视图?

C# 如果模型强绑定到视图,是否需要将模型显式传递到视图?,c#,asp.net-mvc,model-view-controller,C#,Asp.net Mvc,Model View Controller,我有一个我正在处理的项目的例子,其中一个特定的模型从控制器传递到视图,如下所示: result = View(stu) //stu is an object of type Student // // return result; 在这个特定的视图中,我在顶部有@model Project.Models.Student,还有一些文本框,它们将输入的信息绑定到模型中。但是,在另一个控制器中,我有另一个方法,其代码如下: // // result = View(); //

我有一个我正在处理的项目的例子,其中一个特定的模型从控制器传递到视图,如下所示:

result = View(stu)           //stu is an object of type Student
  //
//
return result;
在这个特定的视图中,我在顶部有
@model Project.Models.Student
,还有一些文本框,它们将输入的信息绑定到模型中。但是,在另一个控制器中,我有另一个方法,其代码如下:

//
//
result = View();

//
这个视图有
@model.Project.Models.Login
,但是我仍然可以像在另一个视图中一样从这个视图将东西绑定到模型(例如,我有类似于:

@Html.TextBoxFor(model => model.login_name, new { maxlength = "30" })

我没有像在第一个方法中那样将模型传递给视图,但它似乎具有相同的功能。如果我在视图顶部使用
@model
,这是否意味着不需要从controller方法显式传递模型对象作为参数?

如果在cshtml pa顶部声明@modelge,那么您的页面希望得到您声明的类型的模型。当然,您可以选择不在页面中使用模型,在这种情况下,您的声明是无用的。 此外,您可以声明模型,但不向视图发送任何对象。
如果发送对象,则该对象的类型必须与您在@model中声明的类型相同。

始终将从控制器填充的模型传递给视图。上述注释中的关键字为“填充”-即“初始化”,带有一些值(用于显示、默认值等)。在我的第一个示例中,模型尚未填充,因为该方法将调用允许将信息传递给模型的视图。这是否意味着不需要发送该信息?@edsf如果您不打算使用任何初始化,实际上不需要-您可以查看控制器中的默认
Index
操作模板…好的,所以要100%清楚。对于要强绑定到视图的模型,所需的只是顶部的@model。将模型作为类似于视图(stu)的参数传递到视图不是绑定它的原因,只是如果对象已经填充,您想在视图中显示它还是什么?@EdSFokay。在我的第二个示例中,我没有将模型传递到视图中,但我仍然在顶部声明了@model,它允许我将提交的数据绑定到模型中。为什么?@KramHtml.TextBoxFor generate text输入框,输入名称和值作为您传递给lambda的模型。即使您的模型为null或空,文本框也将生成而没有任何值。另一种情况是,如果您尝试以下代码,您将得到一个执行选项:>Html.TextBox(“name”)、model.login\u name..我不会称之为“无用”-它有助于确保在提交表单时,发送的有效负载“符合”预期模型。这并不是说您不能简单地键入