提交表单时DropdownList为null(MVC3)

时间:2013-04-03 01:57:50

标签: asp.net-mvc-3

我有一个创建页面并有下拉列表。我的问题是,当我提交表单时,dropdownlist为null。请帮忙。这是我的代码。

 public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public List<SelectListItem> Types { get; set; }
    }

创建(获取)

        // GET: /Products/Create

        public ActionResult Create(string id)
        {
            List<Product> products;
            if (Session["products"] != null) products = Session["products"] as List<Product>;
            else products = new List<Product>();
            var product = products.FirstOrDefault(x => id != null && x.Id == int.Parse(id))??new Product();
            var types = new List<SelectListItem>();
            var type = new SelectListItem { Selected = false, Value = "0", Text = "Electronics" };
            types.Add(type);
            type = new SelectListItem { Selected = false, Value = "1", Text = "Non-Electronics" };
            types.Add(type);
            product.Types = types.Select(x => new SelectListItem { Value = x.Value, Text = x.Text }).ToList();
            return View(product);
        } 

查看

@model MVCViewState.Models.Product

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Product</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name)
            @Html.ValidationMessageFor(model => model.Name)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Description)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Description)
            @Html.ValidationMessageFor(model => model.Description)
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.Types)
        </div>
        <div class="editor-field">
            @Html.DropDownListFor(model => model.Types, Model.Types)
            @Html.ValidationMessageFor(model => model.Types)
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

创建(POST)

enter image description here enter image description here

1 个答案:

答案 0 :(得分:4)

我认为您的目的是获取所选Type 的价值。所以你需要这样的东西:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public List<SelectListItem> Types { get; set; }
    public int TypeId { get; set; } // the selected type from the dropdown
}

根据你的观点,你需要这个:

 @Html.DropDownListFor(model => model.TypeId, Model.Types)