【问题标题】:How to bind a <input type = "text" .. with my property in ViewMode如何在 ViewMode 中将 <input type = "text" .. 与我的属性绑定
【发布时间】:2012-02-02 00:44:31
【问题描述】:

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

我没有放置 DropDown、Select 或 Radio,而是放置了 input[type='text'] 字段 当用户开始输入子公司的名称时,autocomplete of jQueryUI 会显示已过滤的子公司列表

代码

为了完成这些任务,我有:

视图模型

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

HTML

SubsidiarySelect的EditorTemplates生成的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属性

  1. 如果这是解决方案,那么如何创建一个只在 PartyViewModel 类中运行的活页夹
  2. 发帖时如何自动从数据库中检索Subsidiary属性类PartyViewModel的值?

【问题讨论】:

  • 不确定将调用存储库的代码放入活页夹是否正确。如果您在客户端拥有的只是Subsidiary_Title 的列表而没有匹配的 guid,那么您仍然应该尝试通过应用程序的意图层对该数据库进行调用。如果在绑定器调用数据库或控制器后操作之间进行选择,我可能会更倾向于在控制器后操作中进行调用。再说一次,这取决于我想你的应用程序是如何分层的。

标签: asp.net-mvc-3 modelbinders mvc-editor-templates custom-model-binder


【解决方案1】:

您可以在 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());

【讨论】:

    猜你喜欢
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 2013-06-28
    • 2015-08-11
    • 2018-07-15
    • 2017-11-29
    相关资源
    最近更新 更多