C# 如何将列表框值保存到MVC4和EF中的数据库中?

C# 如何将列表框值保存到MVC4和EF中的数据库中?,c#,asp.net,asp.net-mvc,entity-framework,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Entity Framework,Asp.net Mvc 4,我有一个登记表,允许管理员为特定用户选择菜单项 我的目标是将所选菜单项以逗号分隔的值保存到数据库中 问题是无论更新模型如何,菜单的值始终设置为空 User.cs public partial class User { public User() { this.Mobilizations = new HashSet<Mobilization>(); } ... public string ADDRESS { get; set

我有一个登记表,允许管理员为特定用户选择菜单项

我的目标是将所选菜单项以逗号分隔的值保存到数据库中

问题是无论更新模型如何,
菜单的值始终设置为空

User.cs

public partial class User
{
    public User()
    {
        this.Mobilizations = new HashSet<Mobilization>();
    }  

    ...
    public string ADDRESS { get; set; }
    public string PHONE { get; set; }       
    public string MENU { get; set; }

 }
 public class userViewModel
{
    public User User { get; set; }       
    public SelectList MenuList { get; set; }

    [Required(ErrorMessage="Select some menu items")]
    public string[] MenuIds { get; set; }
}
 [HttpPost]
    public ActionResult Create(userViewModel model)
    {           
       var menuIds = string.Join(",", model.MenuIds);
       var user = new User()
       {
           MENU=menuIds
       };           
        TryUpdateModel(model);
        if (ModelState.IsValid) //<= The value of MENU not getting updated
        {               
            _db.Entry(model.User).State = EntityState.Modified;
            _db.SaveChanges();
        }
        return RedirectToAction("Create");
    }
控制器.cs

public partial class User
{
    public User()
    {
        this.Mobilizations = new HashSet<Mobilization>();
    }  

    ...
    public string ADDRESS { get; set; }
    public string PHONE { get; set; }       
    public string MENU { get; set; }

 }
 public class userViewModel
{
    public User User { get; set; }       
    public SelectList MenuList { get; set; }

    [Required(ErrorMessage="Select some menu items")]
    public string[] MenuIds { get; set; }
}
 [HttpPost]
    public ActionResult Create(userViewModel model)
    {           
       var menuIds = string.Join(",", model.MenuIds);
       var user = new User()
       {
           MENU=menuIds
       };           
        TryUpdateModel(model);
        if (ModelState.IsValid) //<= The value of MENU not getting updated
        {               
            _db.Entry(model.User).State = EntityState.Modified;
            _db.SaveChanges();
        }
        return RedirectToAction("Create");
    }
[HttpPost]
公共操作结果创建(userViewModel模型)
{           
var menuIds=string.Join(“,”,model.menuIds);
var user=新用户()
{
菜单=菜单项
};           
TryUpdateModel(model);
if(ModelState.IsValid)//model.MenuIds,model.MenuList,new{id=“menuListBox”,@class=“selected select”,multiple=“multiple”,
style=“宽度:350px”})
@Html.ValidationMessageFor(model=>model.MenuIds)

如果我正确理解了问题,您应该执行以下操作:

[HttpPost]
public ActionResult Create(userViewModel model)
{           

    TryUpdateModel(model);
    if (ModelState.IsValid) //<= The value of MENU not getting updated
    {               
        model.User.MENU = string.Join(",", model.MenuIds);
        _db.Entry(model.User).State = EntityState.Modified;
        _db.SaveChanges();
    }
    return RedirectToAction("Create");
}
[HttpPost]
公共操作结果创建(userViewModel模型)
{           
TryUpdateModel(model);

if(ModelState.IsValid)//除非我遗漏了什么,否则您正在创建一个用户对象,然后没有将其保存到任何地方。@ksg View对我来说似乎没问题。谢谢您的回答。我有一个疑问,这段代码
TryUpdateModel(model)
必要。我对它进行了注释并进行了测试,它可以工作。@ksg没问题。我认为这不会更新任何内容,因为您正在更新的菜单项没有显示在视图模型中,如果有意义的话,它是一个单独的菜单项,您正在用户对象中更新。这就是我在上面的示例中重新设置它的原因。祝您好运(其他:)