相关疑难解决方法(0)

ASP.NET MVC局部视图:输入名称前缀

假设我有ViewModel之类的

public class AnotherViewModel
{
   public string Name { get; set; }
}
public class MyViewModel
{
   public string Name { get; set; }
   public AnotherViewModel Child { get; set; }
   public AnotherViewModel Child2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在视图中,我可以渲染部分

<% Html.RenderPartial("AnotherViewModelControl", Model.Child) %>
Run Code Online (Sandbox Code Playgroud)

在部分我会做

<%= Html.TextBox("Name", Model.Name) %>
or
<%= Html.TextBoxFor(x => x.Name) %>
Run Code Online (Sandbox Code Playgroud)

但是,问题是两者都将呈现name ="Name",而我需要name ="Child.Name"才能使模型绑定器正常工作.或者,当我使用相同的局部视图渲染第二个属性时,name ="Child2.Name".

如何使我的局部视图自动识别所需的前缀?我可以将它作为参数传递,但这太不方便了.当我想要例如以递归方式呈现它时,情况会更糟.有没有办法用前缀渲染部分视图,或者更好的是,通过自动重新调用lambda表达式来实现

<% Html.RenderPartial("AnotherViewModelControl", Model.Child) %>
Run Code Online (Sandbox Code Playgroud)

会自动添加正确的"孩子".生成的名称/ id字符串的前缀?

我可以接受任何解决方案,包括第三方视图引擎和库 - 我实际上使用Spark View引擎(我使用它的"解决"问题)和MvcContrib,但没有在那里找到解决方案.XForms,InputBuilder,MVC v2 - 提供此功能的任何工具/洞察都会很棒.

目前我考虑自己编码,但这似乎是浪费时间,我不敢相信这些琐碎的东西还没有实现.

可能存在许多手动解决方案,欢迎所有这些解决方案.例如,我可以强制我的部分基于IPartialViewModel <T> {public string Prefix; T模型; …

asp.net-mvc spark-view-engine mvccontrib

119
推荐指数
7
解决办法
5万
查看次数