尝试在ASP.NET MVC3视图中使用带有ICollection <string>的EditorFor?</string>

时间:2011-10-03 13:21:33

标签: c# .net asp.net-mvc-3 editorfor

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

例如......

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

如果视图就像StackOverflow'问一个问题'页面,Tags html元素是一个input box ..我不知道如何在ASP中做到这一点.NET MVC3视图?

有什么想法吗?

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

1 个答案:

答案 0 :(得分: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")