1

我是 MVC 的新手,我正在尝试使用 TextBox 和 DropDownList 字段创建一个小型产品表单,我在 Model 中创建了一个带有 personName、productName 的类。我只有 5 个产品,所以我不想使用 db。

我尽我所能通过谷歌搜索但仍然无法获得我的下拉列表

谢谢

4

2 回答 2

1

如果您不想使用数据库,您可以创建一个存储所有产品信息的 XML 文档。

然后,您可以创建一个使用 XML 解析器从 XML 文档中获取所有值的模型。

在模型中获得值后,您可以将其绑定到DropDownListFor<Model>.

如果产品没有更改,您还可以将产品硬编码到 DropDownList 中。

于 2012-06-23T13:40:13.883 回答
1

假设您有一个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 文件等。否则,每当您想将新产品添加到列表中时,您都需要重新编译。我希望您将更改此代码以从其他来源读取产品数据,而不是硬编码值。

于 2012-06-23T14:01:13.230 回答