2010-10-17 107 views
2

我有一个关于模型绑定MVC的问题MVC模型绑定限制

说我有一个简单的POCO,如下所示。

public class Person 
{ 
    public Title Title { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public bool LeadPassenger { get; set; } 
} 

我有一个经过的人集合到一个视图和查看我想渲染一个单选按钮,允许用户从的人的集合中选择LeadPassenger内的控制器。

现在,为了这个工作(并且一次只能选择一个单选按钮),所有“LeadPassenger”单选按钮必须共享相同的名称。但是,使用模型绑定约定似乎是不可能的,因为每个控件都是以集合中项目的每个属性命名的。

<input id="Passengers_0_LeadPassenger " name="PolicyMembers[0].LeadPassenger" type="radio" value="true" /> 
<input id="Passengers_1_LeadPassenger " name="PolicyMembers[1].LeadPassenger" type="radio" value="false" /> 

如何克服这个限制吗?我可以使用jQuery来强制所有的单选按钮关闭,当一个被选中,但似乎是一个'fudge'!

任何想法?

+0

如果您使用'Html.RadioButton()',这将自动完成。 :) – bzlm 2010-10-17 09:59:48

+0

嗨bzlm。你是对的。但是如果我使用Html.RadioButton(),那么在提交表单时,我不会在Person对象上获得LeadPassenger属性的模型绑定。 – FloatLeft 2010-10-17 13:38:22

回答

0

这里的诀窍是你试图完成的任务并不是模型绑定的真正目的,它并不真正意识到数据超出了“行”的范围。你想在这里做的是为主要旅客选择引入一个新的领域,将价值与个人的唯一标识符和名称绑定到同一事物上。然后在控制器中将其作为单独的变量提取出来,并从那里映射出来。