以下是情况说明。我有一些包含嵌套复杂模型类型的ViewModels。这里是一个模型的片段(这不是完整的类):
/// <summary>
/// Defines the overall view when viewing contact details.
/// </summary>
public sealed class ContactDetailsViewModel : BaseViewModel
{
public ContactDetailsViewModel() : base() { }
public ContactDetailsViewModel(WebSession webSession) : base(webSession) { }
public ContactDetailsViewModel(WebSession webSession, string returnUrl) : base(webSession, returnUrl) { }
#region Contact
/// <summary>
/// The contact being viewed.
/// </summary>
public ContactModel Contact { get; set; }
#endregion
以下是 ContactModel 类的一段代码片段(不完整):
#region Company
[Required(AllowEmptyStrings = false)]
[StringLength(128)]
public string Company { get; set; }
#endregion
我的问题是,我需要能够获取嵌套模型类型ContactModel的验证属性,以进行客户端验证。在大多数视图中,我使用手动方法,因为我不使用*For()助手方法。这是我做的:
@Html.TextBox(
_titleField,
Model.Contact.Title,
new Dictionary<string,object>(Html.GetUnobtrusiveValidationAttributes("Company"))
{
{ "class", "CTextBox" },
{ "style", "width:100%;" }
})
这个方法很有效,当视图的模型是应用了“验证”属性的模型时,它会产生预期的验证属性。但是,当具有“验证”属性的模型位于嵌套模型对象中时,这种方法就不起作用了。我正在努力想出如何为此场景获取验证属性。视图很复杂,我无法将其分解为多个模型的多个视图,因此我需要使用嵌套模型使其正常工作。
我已经尝试了许多方法,但在试图获得未加工答案之前,我不会详细介绍它们。我会说我已经尝试过使用绑定前缀以及浏览一些静态的“ModelMetadata”类来深入我的嵌套模型结构,但到目前为止还没有成功。如果您能提供帮助,我将不胜感激。
请告诉我您需要什么其他信息,也许可以帮助我。
我还阅读了Brad Wilson和他的同行发表的许多博客文章,但到目前为止还没有找到解决方法。