【问题标题】:Html.EditorFor does not render anything if I use a custom object?如果我使用自定义对象,Html.EditorFor 不会呈现任何内容?
【发布时间】:2010-02-21 12:56:58
【问题描述】:

升级到 asp.net mvc 2 rc 2 后,似乎无法再编辑自定义对象了?我将这种方法http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html 与这样的自定义对象一起使用:

我的模型只有一个属性,但继承自抽象基类 公共类页面:ContentItem { [数据类型(数据类型。多行文本)] 公共虚拟字符串 MainIntro { get;set; } // 这个属性渲染正确

    [DisplayFormat(NullDisplayText="(null value)")]
    public virtual DetailCollection Tags { get; set; }

}

我的控制器是这样的

    public ActionResult Edit(string pagePath) {
        var page = _repository.GetByUrlSegment(pagePath);
        return View(page.EditViewName, new DashboardModel(page, RootPages));
    }

我的观点是这样的

<% using (Html.BeginForm("update","Dashboard", FormMethod.Post, new { name = "editForm" } )) %>
<% { %>
    <div>
        <%=Html.EditorFor(model => model.CurrentItem) %>
        <div class="editor-button">
            <input type="submit" value="Save" />
        </div>
    </div>            
<% } %>

【问题讨论】:

  • 你能再贴一些代码吗……因为你所在的博客不使用 EditorFor。
  • 所以,我现在用更多代码更新了我的问题
  • 看起来这就是它的工作方式。我在 Scott Guthries 博客中发现了这一点 新的模板化 Html.EditorFor() 和 Html.DisplayFor() 辅助方法现在自动构建简单属性(默认情况下不呈现复杂的子属性)。那么如何才能再次启用此功能呢?
  • 最新版本的asp.net mvc 2中关于这个问题有什么变化吗?

标签: asp.net-mvc-2


【解决方案1】:

也许最好将它作为空格分隔的字符串公开给视图,并排除在视图中显示的集合。或者,您可以定义一个特定的模板来显示您想要的集合。我不清楚 MVC 将如何确定要显示的内容。

尝试类似:

        [ShowForDisplay(false)]
        [ShowForEdit(false)]
        public virtual DetailCollection Tags { get; set; }

        public virtual string TagList
        {
             get
             {
                 if (tags == null) return "(null value)";

                 // assumes DetailCollection implements IEnumerable<string>
                 return string.Join( " ", tags.Select( t => t).ToArray() );
             }
             set
             {
                  tags = new DetailCollection( value.Split( new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries )
                                                    .Select( s => s.Trim() ) );
             }
         }

【讨论】:

  • 我在考虑使用 UIHint 属性来指定要使用的模板。
猜你喜欢
  • 1970-01-01
  • 2020-05-22
  • 1970-01-01
  • 1970-01-01
  • 2018-09-18
  • 2015-12-20
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多