2012-02-06 39 views
1

部分的错误信息我有一个ASP.NET视图模型是这样的:ASP.NET MVC - 缺少使用带有TemplateInfo

public class ParentViewModel 
{ 
    public ChildViewModel Child { get; set; } 
} 

反过来ChildViewModel类有装饰与所需的属性和相应的属性错误信息。使ViewModel像这样设置的原因是因为ChildViewModel与部分视图绑定,并且部分视图在不同的上下文中呈现。在一个方面,我渲染ChildViewModel的局部视图,例如:

@Html.Partial("~/Views/Shared/_ChildView.cshtml", Model.AddressModel, new ViewDataDictionary 
    { 
     TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "Child" },     
    }) 

的TemplateInfo引起的局部视图使用正确的名称来渲染,使他们正确地重新填充到ParentViewModel上回发的HTML输入。 ASP.Net也正确检测子视图模型缺少信息(ModelState.IsValid返回正确的结果)。但是,问题是它不显示验证错误消息。关于如何获取错误消息的任何想法?

+0

那么,它可能会帮助,如果你提供你的_ChildView.cshtml代码 – 2012-02-06 23:59:57

回答

0

这一切真的走错了路去这个。而不是部分视图,你应该使用模板。

如果创建一个Child.cshtml并把它放在DisplayTemplates(或EditorTemplates如果它是一个编辑器),然后,在你的代码,你可以简单地这样做:

@Html.DisplayFor(m => m.Child) 
+0

谢谢,不知道EditorTemplates。 – jmacinnes 2012-02-07 01:21:46

1

为什么不使用编辑器模板?我的意思是下面看起来可怕:

@Html.Partial("~/Views/Shared/_ChildView.cshtml", Model.AddressModel, new ViewDataDictionary 
{ 
    TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "Child" },     
}) 

不仅如此,它看起来可怕,但因为你已经发现了它可能会表现出一定的副作用。

如何:

@Html.EditorFor(x => x.Child) 

清洁剂,是不是?现在,所有你需要做的是移动~/Views/Shared/_ChildView.cshtml~/Views/Shared/EditorTemplates/ChildViewModel.cshtml

@model ChildViewModel 
... 
相关问题