4

我试图在Create视图中显示一个类对象,其中属性是ICollection<string>.

例如...

namespace StackOverflow.Entities
{
    public class Question
    {
        public int Id { get; set; }
        ....
        public ICollection<string> Tags { get; set; }
    }
}

如果视图就像 StackOverflow 的“提问”页面,其中的Tagshtml 元素是单个input box.. 我不确定如何在 ASP.NET MVC3 视图中做到这一点?

有任何想法吗?

我尝试使用EditorFor,但浏览器中没有显示任何内容,因为它不确定如何呈现字符串集合。

4

1 回答 1

6

首先用[UIHint]属性装饰你的视图模型:

public class Question
{
    public int Id { get; set; }

    [UIHint("tags")]
    public ICollection<string> Tags { get; set; }
}

然后在主视图中:

@model StackOverflow.Entities.Question
@Html.EditorFor(x => x.Tags)

然后您可以编写自定义编辑器模板 ( ~/Views/Shared/EditorTemplates/tags.cshtml):

@model ICollection<string>
@Html.TextBox("", string.Join(",", Model))

或者如果你不喜欢装饰,你也可以直接在视图中指定用于给定属性的编辑器模板:

@model StackOverflow.Entities.Question
@Html.EditorFor(x => x.Tags, "tags")
于 2011-10-03T21:37:17.987 回答