2016-03-08 68 views
1

问题很简单。我想用另一个表中的值填充DropDownList。但我不想将他们与外国人的钥匙联系起来。MVC 5从另一个表中填充下拉列表并保存值NOT KEY

我的模型

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

    public string ApplicationType { get; set; } 
} 

ApplicationType是一个应该保持ApplicationType的名称(从其他表)

我的控制器:

// GET:应用程序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(); 
} 

而我的查看:

<div class="form-group"> 
    <div class="col-md-5"> 
     <span class="glyphicon-asterisk" style="color:red;"></span> 
     @Html.LabelFor(model => model.ApplicationType , htmlAttributes: new { @class = "control-label", style="margin-bottom:10px;" }) 
     @Html.DropDownListFor(model => model.ApplicationType, (SelectList) ViewBag.AppDataApplicationType, htmlAttributes: new { @class = "form-control" }) 
     @Html.ValidationMessageFor(model => model.ApplicationType, "", new { @class = "text-danger" }) 
    </div> 
</div> 

问题是,当我试图保存这一切都很好,但它是保存id而不是价值。

我会任何帮助非常感激,花个小时试图解决它......

+0

为什么要保存价值,而不是的id? –

+0

如果要保存值,则在选择列表构造函数中将“AppDataApplicationTypeId”,“Name”,“'''转换为''”“Name”,AppDataApplicationTypeId“''或者同时设置为''Name' –

+0

原因很简单。将来的值(对于下拉列表)将会改变。我不喜欢它们在从数据库中删除后消失。所以连接是我不想在这种情况下做的事情。但从另一方面,我想有可能改变ApplicationTypes。这就是为什么。 – Blue

回答

0

尝试改变

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

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

谢谢! :D它以我想要的方式工作。非常感谢你。 – Blue

相关问题