【发布时间】:2011-11-24 16:36:31
【问题描述】:
我有一个使用 EntityFramework 和 SQL2008 的应用程序。我正在使用 DB-first 方法。下面显示了我遇到问题的两个实体:
http://imageshack.us/photo/my-images/339/modelfj.jpg/
Employee Edit.cshtml 的一部分
<div class="client_row">
<label class="client_label">
FirstName</label>
@Html.TextBoxFor(model => model.FirstName, new { @class = "client_edit" })
@Html.ValidationMessageFor(model => model.FirstName)
</div>
<div class="client_row">
<label class="client_label">
LastName</label>
@Html.TextBoxFor(model => model.LastName, new { @class = "client_edit" })
@Html.ValidationMessageFor(model => model.LastName)
</div>
@Html.EditorFor(model => model.Account)
<div class="client_row">
<span class="client_hr"></span>
<label class="client_label">
Email</label>
@Html.TextBoxFor(model => model.Email, new { @class = "client_edit" })
@Html.ValidationMessageFor(model => model.Email)
</div>
帐户编辑器文件(EditorFor 用户)
@Html.HiddenFor(model => model.AccountID)
<div class="client_row">
<label class="client_label">
Login</label>
@Html.TextBoxFor(model => model.Login, new { @class = "client_edit" })
@Html.ValidationMessageFor(model => model.Login)
</div>
<div class="client_row">
<label class="client_label">
Password</label>
@Html.PasswordFor(model => model.Password, new { @class = "client_edit password1" })
我用于验证的部分帐户文件
[MetadataType(typeof(Account_Validation))]
public partial class Account
{
}
[Bind(Exclude = "AccountID")]
public class Account_Validation
{
[Required]
[Remote("IsLoginAvailable", "Validation")]
[Display(Name="Login")]
public string Login { get; set; }
[DataType(DataType.Password)]
[Display(Name="Password")]
public string Password { get; set; }
}
@Html.ValidationMessageFor(model => model.Password)
</div>
当我尝试创建员工时,一切正常。我可以插入 Employee 表和 Account 表。我已经实现了标准的远程验证(使用数据注释)来检查登录名的可用性。
当我尝试编辑员工时,问题就开始了。验证不允许我这样做,因为它说已经登录。嗯,这是真的,但我不想改变它。你们能告诉我我做错了什么吗?
【问题讨论】:
-
您能否提供一个模型上现有 DataAnnotations 的示例?
-
当然,我刚刚添加了代码示例
标签: asp.net asp.net-mvc-3 entity-framework