Как заместить верхний регистр в Html.TextboxFor
Я хотел бы наложить верхний регистр на текстовое поле на мой взгляд. Поэтому, когда пользователь вводит что-то в текстовое поле, текст сразу преобразуется в верхнем регистре или (альтернативный вариант), текст преобразуется в верхнем регистре, когда форма отправляется, а модель заполняется данными (в контроллере действий). Возможно, есть некоторые решения CSS или jquery, но я предпочитаю некоторые решения MVC (если это возможно).
Вот мой взгляд:
@model Domain.Entities.ProjectTechnology
<script src="../../Scripts/Admin/_AddProjectTechnology.js" type="text/javascript"></script>
<div class="editor-label">Technologies</div>
<div class="editor-field">
@using (Ajax.BeginForm("_AddProjectTechnology", new AjaxOptions { HttpMethod = "POST",
UpdateTargetId = "RemoveProjectTechnology",
InsertionMode = InsertionMode.Replace,
OnComplete = "AddProjectTechnologyCompleted" })) {
@Html.ValidationSummary(true)
@Html.HiddenFor(m => m.ProjectID)
@Html.EditorFor(m => m.TechnologyID)
@Html.ValidationMessageFor(m => m.TechnologyID)
}
</div>
И вот моя модель:
public class ProjectTechnology
{
public int ProjectID { get; set; }
public string TechnologyID { get; set; }
}
В текстовом поле находится следующая строка: @Html.EditorFor(m = > m.TechnologyID)
Как я могу продолжить?
Спасибо.
Ответы
Ответ 1
Вы можете выполнить это преобразование на получателе свойства:
public class ProjectTechnology
{
public int ProjectID { get; set; }
private string _technologyId;
public string TechnologyID
{
get
{
if (string.IsNullOrEmpty(_technologyId))
{
return _technologyId;
}
return _technologyId.ToUpper();
}
set
{
_technologyId = value;
}
}
}
Ответ 2
Самый простой способ - ИМО:
@Html.EditorFor(m => m.TechnologyID, new { htmlAttributes = new { @style = "text-transform:uppercase" } })
Ответ 3
Для редактора:
@Html.EditorFor(model =>
model.Nome,
new {
htmlAttributes = new {
@class = "form-control",
@onkeyup = "InputToUpper(this);"
}
}
)
Ответ 4
Моя строка кода в представлении:
@Html.TextBoxFor(model = > model.BldgNameAbbv, new {onkeyup = "InputToUpper (this);" })
Связанный script:
<script>
function InputToUpper(obj)
{
if (obj.value!="")
{
obj.value = obj.value.toUpperCase();
}
}
</script>
Это сработало для меня. И использование TextBoxFor, а не EditorFor, было важно.
Ответ 5
Вы можете использовать text-transform: свойство uppercaase css. Если вы хотите сделать это из mvc, вы можете попробовать создать шаблон для текстового поля (где вы выводите ввод с классом css для верхнего регистра) и использовать атрибут UIHint в модели. Надеюсь, это поможет вам.
Ответ 6
Также см. это:
@Html.EditorFor(m => m.TechnologyID,
new { @class = "whatever-class",
@style = "text-transform:uppercase"})
Ответ 7
Я посмотрел на изменение моего getter и установки в моей модели, но в моем случае я сначала использую DB, поэтому, если я вношу изменения в свою структуру db, мне пришлось бы каждый раз возвращать код getter и setter. Это будет трудно для нас в будущем.
Я попробовал;
@Html.EditorFor(m => m.Lname,
new { @class = "whatever-class",
@style = "text-transform:uppercase"})
но, как указано выше, это делает только капитал в представлении. Когда вы сохраняете его в БД, появляется информация о том, как когда-либо пользователь ввел его. (GIGO). Для нашего сайта мне тоже нужно иметь верхний регистр в БД. Итак, что я сделал для решения этой проблемы, было установить свойство моего объекта для себя вместе с .upper() в методе post action Ex:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "Recid,FName,LName")] UserModel change)
{
change.LName = change.LName.ToUpper();
change.FName = change.FName.ToUpper();
.... //code to update table
}
В сочетании с стилем CSS на переднем конце и установкой свойства в сообщении у меня есть верхние регистры как на лицевой, так и на обратной стороне.
Ответ 8
Если вы хотите просто запретить сохранение в БД в качестве нижнего регистра, то самым прямым вариантом является изменение значения в верхнем регистре во время HttpPost для создания и редактирования действий
например.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("ProjectID, TechnologyID ")] ProjectTechnology projectTechnology)
{
ProjectTechnology.TechnologyID = ProjectTechnology.TechnologyID.ToUpper();
if (ModelState.IsValid)
{
_context.Add(person);
await _context.SaveChangesAsync();