binding dropdownList每行只显示1个字母

时间:2018-04-11 09:20:23

标签: c# razor html.dropdownlistfor

所以我的下拉列表有一个奇怪的问题,它只显示printername的第一个字母,然后用第二个字母换行,依此类推enter image description here

行动结果

 [AcceptVerbs(HttpVerbs.Get)]
        public ActionResult Settings(SettingsModel setting)
        {
            List<SettingsModel> settings = new List<SettingsModel>();
            foreach (string name in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
            {

                //Load the XML file in XmlDocument.
                XmlDocument doc = new XmlDocument();
            doc.Load(Server.MapPath("~/XML/Settings.xml"));
                //Loop through the selected Nodes.

                foreach (XmlNode node in doc.SelectNodes("/Settings/UserSettings"))
            {
                    //Fetch the Node values and assign it to Model.
                    settings.Add(new SettingsModel
                    {
                    Printername = name,
                    AutoCreateSoldPart = node["AutoCreateSoldPart"].InnerText,
                    });

                }
            }
            return View(settings);
        }

视图

@using ActionLink_Send_Model_MVC.Models
@model IEnumerable<SettingsModel>
    <body>
        @using (Html.BeginForm("Settings", "Home", FormMethod.Post))
        {
        foreach (SettingsModel setting in Model)
        {
                    <td class="auto-style7">Printer: </td>
                    <td class="auto-style8">
                        @Html.DropDownList("SettingsModel", new SelectList(setting.Printername))                   
                    </td>

1 个答案:

答案 0 :(得分:0)

在视图模型中,您需要一个SelectListItem列表作为组合内容的来源。然后,您还需要一个绑定到的属性,该属性表示组合中的选定项目。

如下所示。

public class PrintSettingsModel
{
    public List<SelectListItem> PrintSettings { get; set; }
    public string PrinterSelected { get; set; }
}

在控制器中,使用新列表填充模型。

再次,沿着下面的界限。理想情况下,您应该有一个服务,它返回您为模型分配的SelectListItem列表。

public ActionResult ShowPrinters()
{
    var printerModel = new PrintSettingsModel();
    printerModel.PrintSettings = new List<SelectListItem>()
    {
        new SelectListItem()
        {
            Text = "Printer1",   //Your printer details from XML
            Value = "Printer1"
         }
     };

        return View("ShowPrinter", printerModel);
}

然后在您的视图中,使用帮助程序。这指定&#34; PrinterSelected&#34;绑定并使用模型进行组合选项。

@Html.DropDownListFor(x => x.PrinterSelected, new List<SelectListItem>(Model.PrintSettings), "-- Please Select --", new { @class = "form-control" })

我刚刚在本地尝试过,似乎没问题。

最后,假设您要使用选定的打印机设置执行帖子。该模型应包含&#34; PrinterSelected&#34;。然后,您可以使用此值从已知的打印机列表中检索所需的任何信息,即用于填充模型的相同列表。

希望有所帮助。