0

我有以下不同工件的代码,

实体

public class ChooseFirst
{
    public int ChooseFirstId { get; set; }
    public string ChooseFirstName { get; set; }
}

查看模型

public class SelectViewModel
{
    public IEnumerable<SelectListItem> ListChooseFirst { get; set; }
}

控制器/获取操作

//
    // GET: /MenuOne/

    public ActionResult MenuOne()
    {
        var selectViewModel = new SelectViewModel
                                  {
                                      ListChooseFirst = ChooseFirstList()
                                  };

        return View(selectViewModel);
    }
 private IEnumerable<SelectListItem> ChooseFirstList()
    {
        //here data comes from database
        List<ChooseFirst> list = _getFComboService.GetFComboList();

        List<SelectListItem> items = new List<SelectListItem>();
        foreach (ChooseFirst chooseFirst in list)
        {
            SelectListItem item = new SelectListItem();
            item.Text = chooseFirst.ChooseFirstName;
            item.Value = chooseFirst.ChooseFirstId.ToString();
            items.Add(item);
        }
        return items;
    }

HTML 视图

@Html.DropDownList("FCombo", Model.ListChooseFirst, "--Select One--")

现在问题当我发布我的表单时,“selectViewModel”的值为NULL,是否需要建模活页夹,请建议并帮助我如何为此创建模型活页夹?

//
    // POST: /MenuOne/
    [HttpPost]
    public ActionResult MenuOne(SelectViewModel selectViewModel)
    {
        return View();
    }
4

2 回答 2

0

那是对的。发布到服务器的所有内容都是带有所选选项值的“FCombo”。没有选择列表项的枚举。相反,您需要的是发布数据的视图模型。

class SelectedOptionViewModel
{
    public int FCombo {get;set;}
}

或者您可以简单地将参数直接作为参数传递

public ActionResult MenuOne(int fcombo)
{
}
于 2012-06-29T19:24:00.623 回答
0

看起来您缺少将下拉列表的选定值绑定到视图模型中的属性。你需要类似的东西:

 @Html.DropDownListFor(model => model.SelectedItem, Model.ListChooseFirst)

您需要更新 viewModel 以添加 SelectedItem 属性

    class SelectedOptionViewModel
{
    public int SelectedItem {get;set;}
}
于 2012-06-29T19:24:17.563 回答