2011-09-02 83 views
0

我创造了一个降下来的SelectList设置中选择值使用DropDownListFor

public class EditDeviceViewModel 
{ 
    public SelectList DeviceTypeList { get; set; } 
    public int SelectedDeviceType { get; set; } 

    public EditDeviceViewModel(Device device, IEnumerable<DeviceType> DeviceTypes) 
    { 
     ... 
     DeviceTypeList = new SelectList(DeviceTypes.OrderBy(t => t.Type), 
             "ID", 
             "Type", 
             device.DeviceType.ID); 
     SelectedDeviceType = device.DeviceType.ID; 
    } 
} 

然后在我看来,我创建一个下拉使用HTML帮助

@Html.DropDownListFor(model => model.SelectedDeviceType, 
         Model.DeviceTypeList, 
         new { id = "devicetypelist" }) 
不工作

呈现视图时,未选择初始化SelectList时选择的值。我究竟做错了什么?

+0

您是否将模型传递给视图?你确定device.DeviceType.ID在DeviceTypes列表中有一个有效的值吗? –

+0

是的,是的。即使我用一个我知道在列表中的数字替换device.DeviceType.ID,它仍然不起作用。 – link664

回答

3

DropDown列表将使用SelectedDeviceType属性的值作为选定值。你可以做的是当你构建模型时设置属性值

public class EditDeviceViewModel 
{ 
    public SelectList DeviceTypeList { get; set; } 
    public int SelectedDeviceType { get; set; } 

    public EditDeviceViewModel(Device device, IEnumerable<DeviceType> DeviceTypes) 
    { 
     ... 
     DeviceTypeList = new SelectList(DeviceTypes.OrderBy(t => t.Type), 
             "ID", 
             "Type"); 

     SelectedDeviceType = device.DeviceType.ID; 
     ... 
    } 
} 
+0

Yep已经这样做了,抱歉应该在问题中包含这个。现在编辑它。 – link664

+0

@ link664在从控制器传递模型时检查'SelectedDeviceType'的值。 – Eranga

+0

只是意识到你给了我正确的答案,我只是没有意识到你已经从你的SelectList构造函数中移除了selectedValue参数。 – link664

1

DropDownListFor的第一个参数必须是保存所选值的变量。你是否在任何地方设置了SelectedDeviceType?

+0

Yep已经这么做了,抱歉应该在问题中包含这个。现在编辑它。 – link664

+1

尝试删除SelectList中的最后一个参数 –