我有一个表单,我想让用户把它的电话号码。但是,表单看起来是这样的:
[FormField-1] - [FormField-2] - [FormField-3]其中有三个文本框便于用户将其放入xxx-xxx-xxxx格式。但是,我的模型类是:
class Person
{
[Required(ErrorMessage="Phone Mandatory!")]
public string phone {get; set;}
}我的观点是这样的:
@model MvcApplication1.Models.Person
@using ( Html.BeginForm("Create", "Home"))
{
@Html.TextBoxFor( model => model.phone )
@Html.ValidationMessageFor( model => model.phone )<br />
<input type="submit" value="submit" />
}我如何解决这个问题,这样我就不需要有三个不同的类属性来匹配表示电话号码的三个不同的表单字段?
谢谢!
发布于 2011-05-31 16:11:38
在这种情况下,我会使用自定义的ViewModel。
发布于 2011-05-31 08:03:12
您可以使用自定义模型绑定器来实现这一点。
基本上,您注册一个类型(您创建的类型)来处理特定的模型,并且您可以读取张贴的表单字段并手动填充您的模型,而不是使用默认的模型绑定器来执行此操作。我想这是你在这种情况下唯一的选择。
您可以通过从默认模型绑定器继承,然后自己手动处理更复杂的字段来使其更容易。
有关使用自定义模型绑定的更多信息,请查看以下内容:Custom Model Binder
编辑:如果你不想使用自定义模型绑定,你也可以在你的操作中接受一种类型的FormCollection来读取原始发布的数据并在那里处理它,但这取决于你将来想如何扩展你的模型,我猜。
发布于 2011-05-31 08:04:43
一种更简单的解决方案是在表单上使用一些javascript,将三个单独的值保存到一个隐藏输入中,并将该单个输入绑定到模型。
https://stackoverflow.com/questions/6181712
复制相似问题