ASP.NET MVC UpdateModel со своего рода сложным полем ввода данных

Используйте /([^-0-9,.]+)/g как регулярное выражение. Вы также должны экранировать знак минус, но это специальный символ, поэтому вы избегаете его в самом начале, а затем избегаете других символов. Затем вы должны разделить количество совпадающих символов с помощью + (один или несколько). g после того, как выражение означает «глобальный» - вернуть все совпадения, а не только первое.

Этот сайт очень удобен при тестировании выражений регулярных выражений.

9
задан GONeale 3 August 2009 в 23:39
поделиться

1 ответ

То, что необходимо сделать, расширяют DefaultValueProvider в собственное. В Вашем значении поставщик расширяют GetValue (имя) для разделения тегов и загрузки в LazyList. Необходимо будет также изменить вызов на UpdateModel:

UpdateModel(q, new[] { "Title", "Body", "Tags" }, 
   new QuestionValueProvider(this.ControllerContext));

QuestionValueProvider, который я записал:

 public class QuestionValueProvider : DefaultValueProvider
    {
        public QuestionValueProvider(ControllerContext controllerContext)
            : base(controllerContext)
        {
        }
        public override ValueProviderResult GetValue(string name)
        {
            ValueProviderResult value = base.GetValue(name);
            if (name == "Tags")
            {
                List<string> tags = new List<string>();
                string[] splits = value.AttemptedValue.Split(' ');
                foreach (string t in splits)
                    tags.Add(t);

                value = new ValueProviderResult(tags, null, value.Culture); 
            }
            return value;
        }
    }

Надеюсь, это поможет

8
ответ дан 4 December 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: