如何绑定到具有Subsidiary
类型属性的input[type='text']
字段当用户注册一方时,其中一个字段是该方的子公司
我没有放置DropDown、Select或Radio字段,而是放置了input[type='text']
字段当用户开始键入子公司的名称时,jQueryUI的自动完成显示子公司已过滤的列表
代码
为了完成这些任务,我有:
ViewModel
public class PartyViewModel
{
[UIHint("SubsidiarySelect")]
public Subsidiary Subsidiary { get; set; }
}
HTML
SubsidiarySelect
编辑器模板生成的HTML
<input id="Subsidiary_Title" name="Subsidiary.Title" type="text" value="">
<input id="Subsidiary" name="Subsidiary" type="hidden" value="00000000-0000-0000-0000-000000000000">
#Subsidiary_Title
>用于显示所选子公司#Subsidiary
>保存子的选定代码Guid
控制器
我的控制没什么特别的。我希望我的PartyViewModel
类中的属性Subsidiary
已经填充。
[HttpPost]
public ActionResult Nova(PartyViewModel model)
{
if (ModelState.IsValid)
{
//.....
}
}
问题
我想创建一个SubsidiaryBinder: IModelBinder
,这样在发布帖子时,我就会用数据库值(如ID)填充Subsidiary
属性
- 如果这是解决方案,那么如何创建仅在类PartyViewModel中运行的绑定器
- 如何自动检索值发布时从
Subsidiary
属性类PartyViewModel
的数据库
您可以在global.asax 中的Application_Start上为PartyViewModel
设置Binder
样品
您的活页夹
public class PartyViewModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
// ... do something,
// for example, retieve values from database
return base.BindModel(controllerContext, bindingContext);
}
}
在global.asax中注册
ModelBinders.Binders.Add(typeof(PartyViewModel), new PartyViewModelBinder());