Asp.net mvc asp.net MVC“;创建视图&x201D;和数据

Asp.net mvc asp.net MVC“;创建视图&x201D;和数据,asp.net-mvc,create-view,Asp.net Mvc,Create View,我有一个Create视图,它使用一个模型,比如说一个客户。在HttpGet上,如果我像大多数教程一样没有传递任何客户对象,那么我就不能使用任何语句,如@Model.CustomerID等。如果我选择使用@Model.xxxx语句,它们将因缺少客户对象而失败。所以一切都很好,因为在Create视图中,Create视图上的HttpGet请求中不需要数据 然后,当用户输入所有请求的数据并单击Submit按钮时,我的JavaScript开始验证。假设我没有检查或者不能检查每一个可能的错误。发生回发,服务

我有一个Create视图,它使用一个模型,比如说一个客户。在
HttpGet
上,如果我像大多数教程一样没有传递任何客户对象,那么我就不能使用任何语句,如
@Model.CustomerID
等。如果我选择使用
@Model.xxxx
语句,它们将因缺少客户对象而失败。所以一切都很好,因为在Create视图中,Create视图上的
HttpGet
请求中不需要数据

然后,当用户输入所有请求的数据并单击Submit按钮时,我的JavaScript开始验证。假设我没有检查或者不能检查每一个可能的错误。发生回发,服务器验证代码发现错误。我想在创建视图中发布服务器端验证错误。没有问题,因为我在页面上有一个验证摘要。但是,由于视图上没有从模型中提取数据的
@Model.xxxxx
语句,因此会忽略客户的数据,只显示错误消息。当然,解决方法是在
HttpGet
HttpPost
上以模型的形式传递客户对象

然后,我将传递一个Customer对象,其中字符串初始化为
string.Empty
,int等初始化为0或其他任何值。然后我添加
@Model.xxxxx
语句来提取数据。当然,数据是在
HttpGet
HttpPost
上提取的,但这没关系,因为我是如何初始化上述客户对象的


我已经做了所有这一切,它的工作,但这是以下的最佳做法?我哪里出错了吗?

您不需要初始化每个字段。您可以继续使用
EditorFor
DisplayFor
助手,这些助手将表达式作为参数。如果模型为空,它们不会呈现内容。因此,您只需要在默认操作中传递一个空模型

例如:

@model Customer
@using(Html.BeginForm(blabla)) {
   <div>
       @Html.ValidationMessageFor(m => m.Name)
       @Html.EditorFor(m => m.Name)
   </div>
   <div>
       @Html.DisplayFor(m => m.Status)
   </div>
}

它将根据客户模型中各个数据类型的模板创建表单布局。

您不需要初始化每个字段。您可以继续使用
EditorFor
DisplayFor
助手,这些助手将表达式作为参数。如果模型为空,它们不会呈现内容。因此,您只需要在默认操作中传递一个空模型

例如:

@model Customer
@using(Html.BeginForm(blabla)) {
   <div>
       @Html.ValidationMessageFor(m => m.Name)
       @Html.EditorFor(m => m.Name)
   </div>
   <div>
       @Html.DisplayFor(m => m.Status)
   </div>
}

它将根据客户模型中各个数据类型的模板创建表单布局。

是否使用属性?你能给我们看一些代码吗?是的,我在使用属性。你在使用属性吗?你能给我们看一些代码吗?是的,我正在使用属性。