所以我的下拉列表有一个奇怪的问题,它只显示printername的第一个字母,然后用第二个字母换行,依此类推
行动结果
[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>
答案 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;。然后,您可以使用此值从已知的打印机列表中检索所需的任何信息,即用于填充模型的相同列表。
希望有所帮助。