2011-12-13 51 views
2

我有一个yes/no单选按钮,需要访问另一个aspx表单上的值。我不知道我是否做对了?访问IEnumerable mvc2单选按钮的值

主视图模型

[UIHint("YesNoEditorTemplate")] 
[DisplayName("Are you registered as blind (severely sight impaired)?")] 
public IEnumerable<RadioButtonViewModel> RegBlind { get; set; } 

单选按钮视图模型

public class RadioButtonViewModel 
{ 
    public string ID { get; set; } 
    public string Name { get; set; } 
    public int Value { get; set; } 
    public string Text { get; set; } 
} 

控制器

List<RadioButtonViewModel> regBlindList = new List<RadioButtonViewModel>(); 
regBlindList.Add(CreateRadioButton("RegBlind", 1, "Yes")); 
regBlindList.Add(CreateRadioButton("RegBlind", 0, "No")); 
badgeViewModel.RegBlind = regBlindList; 

编辑模板

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Tameside.Internal.ViewModels.BlueBadge.RadioButtonViewModel>>"%><% 
foreach (var model in Model) 
{%> 
    <tr>  
     <td><%=String.Format("<input type=\"radio\" id=\"{0}\" name=\"{1}\" value=\"{2}\" />", model.ID, model.Name,model.Value)%></td> 
     <td><%=String.Format("<label for=\"{0}\">{1}</label>", model.ID, model.Text)%></td> 
    </tr><% 
}%> 

ASPX页面

<%=Html.EditorFor(x => x.RegBlind)%> 

这里是我正在访问信息

if (Model.RegBlind.First().Value == 0) 

这是正确的吗?

在此先感谢您的帮助。

克莱尔

回答

2

我认为这个问题是,枚举绝不会存储选定值,这只是流失到一定程度。

所以你需要两个部分,一个存储值和另一个包含你想显示的单选按钮。

[DisplayName("Are you registered as blind (severely sight impaired)?")] 
public int RegBlind { get; set; } 

public IEnumerable<RadioButtonViewModel> RegBlindOptions { get; set; } 

一旦你得到这个排序,你应该能够使用您的EditorTemplate作为一个局部视图(不过,这很可能意味着移动它的EditorTemplates目录,进入相应的视图文件夹或共享)。

<% Html.RenderPartial("YesNoEditorTemplate", Model.RegBlindOptions)%> 

这应该工作或接近。如果没有,看看生成的HTML,并检查一切正常,然后在邮件头中发送回来的内容有一个问题:)