在发送到控制器MVC之前强制文本输入到所有大写字母

时间:2017-07-14 14:53:11

标签: html asp.net-mvc

我在Index()视图中有这个文本框,供用户输入一个ID,该ID被发送到控制器方法,根据ID在数据库中查找顾问,但我想强制输入大写之前它被发送到控制器。我知道我可以在控制器方法中大写它,但是如果用户最初使用小写字母输入,则创建的Consultant对象具有小写ID,并且出于某种原因,我在不同视图中编辑顾问详细信息的模式弹出窗口, ViewConsultant将拉入原始的小写ID,而不是附加到模型的大写ID。我希望这个问题有道理,我可以澄清一下,如果我没有说清楚我的问题是什么。

<input type="text" class="form-control " id="ID" name="ID" style="vertical-align:bottom; text-transform:uppercase;" />

1 个答案:

答案 0 :(得分:0)

通过小写和大写ID,我认为你在谈论属性名称?我倾向于在我的视图中使用的一种技术将其建模在主视图的根上有一个复杂属性,一个用于模态(或者模态的至少一个复杂属性)。

我执行以下操作:

public class RootViewModel
{

   public long ID { get; set; }

   public string OtherData { get;set; }

   public ModalDetails ModalDetails { get;set; }

}

public class ModalDetails
{
   public long ID { get; set; }

   public string OtherData { get; set; }
}

在用户界面中,您可以执行以下操作:

<form>
   @Html.HiddenFor(m => m.ID)
</form>

<div class="modal fade">
 ..
 @Html.HiddenFor(m => m.ModalDetails.ID)
</div>

这样,模态数据与主视图数据分开。如果模态周围有一个表单,你还可以检测到模式回发,因为ModalDetails记录将在回发时填充,等等。