0
这似乎应该很容易实现,但我发现它具有挑战性。 我有我的视图模型中的对象列表需要验证,不显眼。验证列表的对象 - 不显眼ASP.NET MVC 3 C#
我已经看过FluentValidation这个,但似乎有be a bug in the collections validation实现不会触发不显眼的验证器。不知道是否有一种方法可以使用数据注释 获得不明显的验证发生的对象列表(和服务器端)
我正在寻找关于如何执行此操作的建议。由于
对象
public class NewClubSponsor
{
public string SponsorContactName { get; set; }
public string SponsorContactEmail { get; set; }
public string SponsorContactPhone { get; set; }
}
我宣布NewClubSponsor对象的名单在我的视图模型
public List<NewClubSponsor> Sponsors { get; set; }
观
<div id="addCosponsorSection">
<!-- We have at least 1 existing sponsor -->
@if (Model.Sponsors != null)
{
for (var i = 0; i < Model.Sponsors.Count; i++)
{
string sponsorDivId = "sponsorclubname" + i.ToString();
string deleteLink = "<a class=\"icon delete cosponsor\" data-attr-divid=\""[email protected]+"\" data-attr-id=" + @Model.Sponsors[i].Id + "></a>";
<div id="@sponsorDivId">
<div class="formColumn1"><label for="sponsorclubname1">Sponsor club name</label></div>
<div class="formColumn2">@Html.EditorFor(x => x.Sponsors[i].SponsorContactName)
<div class="messageBottom">
@Html.ValidationMessageFor(model => model.Sponsors[i].SponsorContactName)
</div>
</div>
<div class="formColumn3">@Html.EditorFor(x => x.Sponsors[i].SponsorContactEmail)
<div class="messageBottom">
@Html.ValidationMessageFor(model => model.Sponsors[i].SponsorContactEmail)
</div>
</div>
<div class="formColumn4">@Html.EditorFor(x => x.Sponsors[i].SponsorContactPhone)@(i > 0 ? Html.Raw(deleteLink) : Html.Raw(""))
<div class="messageBottom">
@Html.ValidationMessageFor(model => model.Sponsors[i].SponsorContactPhone)
</div>
</div>
</div>
<div class="clear"></div>
}
}
else
{
<!-- No sponsors added yet. We need at least 1 sponsor -->
<div id="sponsorclubname1">
<div class="formColumn1"><label for="sponsorclubname1">Sponsor club name</label></div>
<div class="formColumn2">@Html.EditorFor(model => model.Sponsors[0].SponsorContactName)
<div class="messageBottom">
@Html.ValidationMessageFor(model => model.Sponsors[0].SponsorContactName)
</div>
</div>
<div class="formColumn3">@Html.EditorFor(model => model.Sponsors[0].SponsorContactEmail)
<div class="messageBottom">
@Html.ValidationMessageFor(model => model.Sponsors[0].SponsorContactEmail)
</div>
</div>
<div class="formColumn4">@Html.EditorFor(model => model.Sponsors[0].SponsorContactPhone)
<div class="messageBottom">
@Html.ValidationMessageFor(model => model.Sponsors[0].SponsorContactPhone)
</div>
</div>
</div>
<div class="clear"></div>
<!-- END Static HTML -->
}
</div>
你会提供一个例子吗?不太确定你的意思。类对象的数据注释需要放在视图模型中,而不是放在实际模型本身上,因为不需要该类的所有对象。 – Slinky
在您的NewClubSponsor类中,您应该放置数据注释。然后,用你拥有的东西,并且已经包含了jquery.validate.unobtrusive.js,它应该在客户端工作。 – Romias
我试图保留视图模型中的注释,但它似乎好像是一个对象列表,他们需要进入域模型。 – Slinky