Trying to use EditorFor with an ICollection<string> in an ASP.NET MVC3 View?

孤街醉人 提交于 2019-12-22 08:14:19

问题


I'm trying to display a class object in a Create view, where a property is an ICollection<string>.

For example...

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

and if the view was like a StackOverflow 'ask a question' page, where the Tags html element is a single input box .. I'm not sure how I could do that in an ASP.NET MVC3 view?

Any ideas?

I tried using EditorFor but nothing was displayed in the browser, because it's not sure how to render a collection of strings.


回答1:


Start by decorating your view model with the [UIHint] attribute:

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

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

and then in the main view:

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

and then you could write a custom editor template (~/Views/Shared/EditorTemplates/tags.cshtml):

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

or if you don't like decorating, you could also specify the editor template to be used for the given property directly in the view:

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


来源:https://stackoverflow.com/questions/7635555/trying-to-use-editorfor-with-an-icollectionstring-in-an-asp-net-mvc3-view

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!