我是 MVC 的新手,我正在尝试使用 TextBox 和 DropDownList 字段创建一个小型产品表单,我在 Model 中创建了一个带有 personName、productName 的类。我只有 5 个产品,所以我不想使用 db。
我尽我所能通过谷歌搜索但仍然无法获得我的下拉列表
谢谢
我是 MVC 的新手,我正在尝试使用 TextBox 和 DropDownList 字段创建一个小型产品表单,我在 Model 中创建了一个带有 personName、productName 的类。我只有 5 个产品,所以我不想使用 db。
我尽我所能通过谷歌搜索但仍然无法获得我的下拉列表
谢谢
如果您不想使用数据库,您可以创建一个存储所有产品信息的 XML 文档。
然后,您可以创建一个使用 XML 解析器从 XML 文档中获取所有值的模型。
在模型中获得值后,您可以将其绑定到DropDownListFor<Model>
.
如果产品没有更改,您还可以将产品硬编码到 DropDownList 中。
假设您有一个PersonsProduct
类来表示您的模型/视图模型,如下所示
public class PersonsProduct
{
public string PersonName { set;get;}
public IEnumerable<SelectListItem> Products { get; set; }
public string SelectedProductId { get; set; }
//Other Properties
}
在您的GET
操作方法中,您可以像这样初始化值
public ActionResult AddProduct()
{
var objProduct = new PersonsProduct();
objProduct.Products = new[]
{
new SelectListItem { Value = "1", Text = "Book" },
new SelectListItem { Value = "2", Text = "Pen" },
new SelectListItem { Value = "3", Text = "Computer" },
new SelectListItem { Value = "4", Text = "Table" },
new SelectListItem { Value = "5", Text = "Mouse" }
};
// can replace the above line with loading data from Data access layer.
return View(objProduct);
}
在你的视图中,它是对视图模型的强PersonsProduct
类型
@model PersonsProduct
@using (Html.BeginForm())
{
@Html.DropDownListFor(x => x.SelectedProductId, new SelectList(Model.Products ,"Value","Text"), "Select..")
<input type="submit" value="save" />
}
在您的HTTPPost
操作中,您可以像这样获取所选的 productId
[HttpPost]
public ActionResult Index(PersonsProduct model)
{
// check model.SelectedProductId here
}
这回答了您的问题(不使用数据库和 XML)。但我强烈建议避免这种硬编码方法。您应该更好地为产品列表使用不同的源,例如数据库/XML 文件等。否则,每当您想将新产品添加到列表中时,您都需要重新编译。我希望您将更改此代码以从其他来源读取产品数据,而不是硬编码值。