【发布时间】: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属性
- 如果这是解决方案,那么如何创建一个只在 PartyViewModel 类中运行的活页夹
- 发帖时如何自动从数据库中检索
Subsidiary属性类PartyViewModel的值?
【问题讨论】:
-
不确定将调用存储库的代码放入活页夹是否正确。如果您在客户端拥有的只是
Subsidiary_Title的列表而没有匹配的 guid,那么您仍然应该尝试通过应用程序的意图层对该数据库进行调用。如果在绑定器调用数据库或控制器后操作之间进行选择,我可能会更倾向于在控制器后操作中进行调用。再说一次,这取决于我想你的应用程序是如何分层的。
标签: asp.net-mvc-3 modelbinders mvc-editor-templates custom-model-binder