C# MVC 5从另一个表填充下拉列表并保存值非键

C# MVC 5从另一个表填充下拉列表并保存值非键,c#,asp.net,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc 5,问题很简单。我想用另一个表中的值填充DropDownList。但我不想把它们和外国钥匙联系起来 我的模型 public class Application1 { public int Application1Id { get; set; } public string ApplicationType { get; set; } } 字段ApplicationType应保留ApplicationType的名称(来自其他表) 我的控制器: //获取:应用程序1/创建 pub

问题很简单。我想用另一个表中的值填充DropDownList。但我不想把它们和外国钥匙联系起来

我的模型

 public class Application1
 {
    public int Application1Id { get; set; }

    public string ApplicationType { get; set; }
 }
字段
ApplicationType
应保留
ApplicationType
的名称(来自其他表)

我的控制器:

//获取:应用程序1/创建

public ActionResult Create()
{
    ViewBag.AppDataApplicationType = new SelectList(db.AppDataApplicationTypes, "AppDataApplicationTypeId", "Name");
    return View();
}

// POST: Application1/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Application1 application1)
{
    if (ModelState.IsValid)
    {
        db.Application1.Add(application1); 
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    ViewBag.AppDataApplicationTypeId = new SelectList(db.AppDataApplicationTypes, "AppDataApplicationTypeId", "Name");     
    return View();
}
我的看法是:


@LabelFor(model=>model.ApplicationType,htmlAttributes:new{@class=“control-label”,style=“margin-bottom:10px;”)
@DropDownListFor(model=>model.ApplicationType,(SelectList)ViewBag.AppDataApplicationType,htmlAttributes:new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.ApplicationType,“,new{@class=“text danger”})
问题是,当我试图保存它时,一切都正常,但它保存的是id而不是值

我将非常感谢任何帮助,花几个小时来尝试解决它

试试换衣服

ViewBag.AppDataApplicationType = new SelectList(db.AppDataApplicationTypes, "AppDataApplicationTypeId", "Name");

试着改变

ViewBag.AppDataApplicationType = new SelectList(db.AppDataApplicationTypes, "AppDataApplicationTypeId", "Name");


为什么要保存值而不是id?如果要保存值,请在selectlist构造函数中将
“AppDataApplicationTypeId”、“Name”
切换到
“Name”、AppDataApplicationTypeId“
,或者将两者都设置为
Name
,原因很简单。在将来,值(对于dropdownlist)将更改。我不希望它们在从数据库中删除后消失。因此,在这种情况下,连接是我不喜欢做的事情。但从另一方面来说,我希望有可能更改应用程序类型。这就是为什么。你的意思是在控制器中执行此操作?为什么要保存值而不是id?如果要保存值,请在selectlist构造函数中将
“AppDataApplicationTypeId”、“Name”
交换到
“Name”、AppDataApplicationTypeId“
,或者将两者都设置为
Name
,原因很简单。在将来,值(对于dropdownlist)将更改。我不希望它们在从数据库中删除后消失。因此,在这种情况下,连接是我不喜欢做的事情。但从另一方面来说,我希望有可能更改应用程序类型。这就是为什么。你是说在控制器里做?