我使用Visual Web Developer 2010和ASP .NET与MVC2创建一个简单的客户管理模块,其中视图将允许输入名字,姓氏,地址等,并在提交时,新的“ID”将被分配给CustomerModel实例的CustomerID属性。
用于创建客户的Controller方法(CustomerController)如下:
<HttpPost()> _
Public Function CreateCustomer(ByVal model As CustomerModel) As ActionResult
model = Me.customerServiceClientValue.CreateCustomer(model)
Return (View(model))
End Function
我可以看到控件到达CreateCustomer()方法内部,并调用Customer Service来创建客户。该服务还返回具有新ID的客户。与该方法一样,从服务调用返回的客户实例被分配回进入的“模型”变量。该模型实例将传递给return语句中的“View”。但是,当刷新视图时,我看不到客户ID字段的值。
我对客户ID字段进行了以下标记:
<div class="editor-label">
<%: Html.LabelFor(Function(model) model.CustomerID)%>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(Function(model) model.CustomerID)%>
<%: Html.ValidationMessageFor(Function(model) model.CustomerID)%>
</div>
我做错了什么?虽然模型包含新的客户ID,但为什么我没有在该字段中获取客户ID?感谢您的所有帮助。
谢谢和问候,
Dinesh Jayadevan答案 0 :(得分:2)
因为TextBoxFor
(和其他帮助者)总是首先查看要显示的帖子值。如果不存在后置值,则查看模型。这样做的原因是,如果您的表单有错误,您通常希望表单显示与发布的数据相同的数据,而不是某些可能更改的模型数据。
您可以在控制器中调用ModelState.Clear();
以防止这种情况,但这不是一个好主意。