Asp.net mvc 3 如何绑定a<;输入类型=";“文本”。。在视图模式下使用我的属性

Asp.net mvc 3 如何绑定a<;输入类型=";“文本”。。在视图模式下使用我的属性,asp.net-mvc-3,modelbinders,mvc-editor-templates,custom-model-binder,Asp.net Mvc 3,Modelbinders,Mvc Editor Templates,Custom Model Binder,如何绑定到属性类型为Subsidiary的输入[type='text']字段 当用户注册一方时,其中一个字段是该方的子公司 我没有放置下拉列表,而是选择或收音机,而是放置了一个input[type='text']字段 当用户开始键入子公司的名称时,将显示已筛选的子公司列表 代码 为了完成这些任务,我必须: 视图模型 public class PartyViewModel { [UIHint("SubsidiarySelect")] public Subsidiary

如何绑定到属性类型为
Subsidiary
输入[type='text']
字段 当用户注册一方时,其中一个字段是该方的子公司

我没有放置下拉列表,而是选择或收音机,而是放置了一个
input[type='text']
字段 当用户开始键入子公司的名称时,将显示已筛选的子公司列表

代码 为了完成这些任务,我必须:

视图模型

public class PartyViewModel
{       
    [UIHint("SubsidiarySelect")]
    public Subsidiary Subsidiary { get; set; }
}
HTML

subdiaryselect的编辑器模板生成的HTML

<input id="Subsidiary_Title" name="Subsidiary.Title" type="text" value="">
<input id="Subsidiary" name="Subsidiary" type="hidden" value="00000000-0000-0000-0000-000000000000">
问题 我想创建一个
SubsidiaryBinder:IModelBinder
,这样在发布帖子时,我就可以用数据库值(ID)填充
SubsidiaryBinder
属性

  • 如果这是解决方案,那么如何创建仅在类PartyViewModel中运行的绑定器
  • 如何自动检索值​​发布帖子时,是否从
    子公司
    属性类
    PartyViewModel
    的数据库中

  • 您可以在global.asax中启动应用程序时为您的
    PartyViewModel
    设置活页夹

    样品 您的活页夹

    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());
    

    不确定将调用存储库的代码放入活页夹是否正确。如果客户端只有一个
    Subsidiary\u Title
    列表,而没有匹配的guid,那么您仍然应该尝试通过应用程序的预期层调用数据库。如果在绑定器调用数据库或控制器post操作之间进行选择,我可能会更倾向于在控制器post操作中进行调用。再说一遍,我想这取决于应用程序的层次。
    ModelBinders.Binders.Add(typeof(PartyViewModel), new PartyViewModelBinder());