Редактор MVCFor to Title Case

Как вы конвертируете входное значение в регистр заголовка в EditorFor? я знаю, что делаю

@Html.EditorFor(model, new { htmlAttributes = new { @style = "text-transform:uppercase" } })

изменит только клиентскую сторону, поэтому мне нужно изменить ее вручную на стороне сервера.

Я попытался добавить класс text-capitalize, но, похоже, не повезло.

Заранее спасибо.


person Mace Munch    schedule 27.07.2018    source источник


Ответы (3)


Вот пояснения по использованию регистра заголовков или регистра предложений для строковых свойств модели представления, которые привязаны к EditorFor:

1) Если вы хотите использовать заглавный регистр, вы можете установить его внутри части получения с помощью ToTitleCase (измените CurrentCulture на InvariantCulture в зависимости от ваших требований), как в примере ниже:

private string _titleCase;
private System.Globalization.CultureInfo culture = System.Threading.Thread.CurrentThread.CurrentCulture;

public string TitleCaseProperty
{
    get
    {
        if (string.IsNullOrEmpty(_titleCase))
        {
            return _value;
        }
        else 
        {
            return culture.TextInfo.ToTitleCase(_titleCase.ToLower());
        }
    }
    set
    {
        _titleCase = value;
    }
}

Просмотр использования

@Html.EditorFor(model => model.TitleCaseProperty, ...)

2) Если вместо этого вам нужен регистр предложений, используйте регулярное выражение для поиска последовательностей (ссылка на эта аналогичная проблема) и выполните аналогичный способ получения части, как указано выше:

private string _sentenceCase;
private Regex rgx = new Regex(@"(^[a-z])|[?!.:,;]\s+(.)", RegexOptions.ExplicitCapture);

public string SentenceCaseProperty
{
    get
    {
        if (string.IsNullOrEmpty(_sentenceCase))
        {
            return _value;
        }
        else 
        {
            return rgx.Replace(_sentenceCase.ToLower(), s => s.Value.ToUpper());
        }
    }
    set
    {
        _sentenceCase = value;
    }
}

Просмотр использования

@Html.EditorFor(model => model.SentenceCaseProperty, ...)

Живой пример: демонстрация .NET Fiddle

person Tetsuya Yamamoto    schedule 27.07.2018

Я бы рекомендовал выполнить это преобразование в получателе этого свойства, используя .ToUpper()

get {
  if (string.IsNullOrEmpty(_value))
     {
       return _value;
     }
   return _value.ToUpper();
 }
person Tushar    schedule 27.07.2018
comment
Разве они не преобразуют все вводимые данные в верхний регистр? Я хотел, чтобы это было приговорено/заголовок дела. - person Mace Munch; 27.07.2018

более простой метод

@Html.TextBoxFor(model.FieldName, new { @class = "uppercase" })

CSS:

.uppercase { text-transform:uppercase }
person Bayram Akbuz    schedule 27.07.2018