Пытаетесь использовать EditorFor с ICollection <string>в ASP.NET MVC3 View? - PullRequest
4 голосов
/ 03 октября 2011

Я пытаюсь отобразить объект класса в представлении 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 Ответ

6 голосов
/ 04 октября 2011

Начните с украшения модели представления атрибутом [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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...