将Enum下拉列表值添加到数据库(MVC)

时间:2018-02-19 23:12:11

标签: c# asp.net-mvc enums

我是MVC5的新手。我有一个下拉列表,我使用枚举值创建,完美地工作。但是,我无法将用户从下拉列表中选择的值获取到数据库表(SQLserver)中。这是枚举...

[Required]
    public ClassTypeEnum Level { get; set; }

    public enum ClassTypeEnum
    {                        
        Junior = 0,
        Kindergarten = 1,
        Primary = 2            
    }

最初,我在表(Name)中只有一列,但是当我创建下拉列表时,我更新了数据库,创建了一个新列,用于存储枚举下拉列表中的新级别。

以下是我将第一项(名称)保存到数据库的方法。如何修改此代码以捕获枚举下拉列表选择并将名称和级别写入数据库表?

// Create: POST
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(ClassGroup newclass)
    {
        if(ModelState.IsValid)
        {                
            db.ClassGroups.Add(newclass);
            db.SaveChanges();

            return RedirectToAction("Index");
        }
        return View();
    }

这是我尝试过但没有成功的事情:

// Create: POST
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(ClassGroup newClass, ClassTypeEnum addLevel)
    {
        if(ModelState.IsValid)
        { 
            db.ClassGroups.Add(newClass);
            db.ClassGroups.Add(addLevel);
            db.SaveChanges();

            return RedirectToAction("Index");
        }
        return View();
    }

以防您需要查看枚举下拉列表:

div class="form-group">
            @Html.LabelFor(m => m.Level, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EnumDropDownListFor(x => x.Level,  new { @class = "form-control" })
                @Html.ValidationMessageFor(x => x.Level, "", new { @class = "text-danger" })
            </div>
        </div>

非常感谢任何对MVC新手的帮助。谢谢!

我的完整classGroup如下所示:

    using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace Amos.Models
{
    public class ClassGroup
    {
        [Required]
        public int ID { get; set; }

        [Required]
        [DisplayName("Name / Alias")]
        public string Name { get; set; }

        [Required]
        public ClassTypeEnum Level{ get; set; }

        public enum ClassTypeEnum
        {
            Junior = 0,
            Kindergarten = 1,
            Primary = 2 
        }

    }

0 个答案:

没有答案