gpt4 book ai didi

c# - 使用部分类进行验证?

转载 作者:太空宇宙 更新时间:2023-11-03 11:40:42 25 4
gpt4 key购买 nike

我正在使用 Entity Framework 来创建我的数据对象。这是我的 designer.cs 文件的样子:

namespace MyApp.WebUI.Models
{
...

[EdmEntityTypeAttribute(NamespaceName="MyAppDBModel", Name="AddressType")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class AddressType : EntityObject
{
...
}

...
}

我有一个名为 Validation.cs 的文件,我想在其中保留对我的实体的所有验证。这是它的样子:

namespace MyApp.WebUI.Models
{
public class Validations
{
...

[MetadataType(typeof(AddressTypesValidation))]
public partial class AddressType
{

}

public class AddressTypesValidation
{
[Required(ErrorMessage = "Address Type name is required.")]
[StringLength(50, ErrorMessage = "Address Type name must be 50 characters or less.")]
public string Name { get; set; }
}
}
}

我的 View 页面中有这个:

<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm("Edit", "AddressTypes", FormMethod.Post)) { %>

<div class="editor-label"><%: Html.LabelFor(m => m.Name) %></div>
<div class="editor-field">
<%: Html.TextBoxFor(m => m.Name) %>
<%: Html.ValidationMessageFor(m => m.Name) %>
</div>
<input type="submit" value="Save" />

<% } %>

但是我的验证没有加载。如果我尝试提交没有 Name 值的表单,我会收到一条错误消息,指出 The value '' is invalid. 而不是我的错误消息。

我做错了什么?

最佳答案

您的方法存在根本性缺陷。人们普遍认为,将您的数据库对象用作 View 模型并让 Mvc 对其进行模型绑定(bind)是非常糟糕的主意。

达林有一个 great answer详细说明与在 View 中使用域对象相关的问题。

我认为你的问题是因为你将数据对象与 View 模型混合在一起,引用 Darin

About 60% of the question I am [Darin] answering on StackOverflow in the asp.net-mvc tag wouldn't have been asked if the OP have used a view model.

关于c# - 使用部分类进行验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4882521/

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