在Create操作中,我可以将信息添加到编辑器字段并将它们保存到Table1,但是,对于我想要一个下拉列表的一个字段,从Table2中的一列填充,然后可以选择并保存到Table1在其中一个字段中,具体取决于选择。我已设法在Table2的下拉表中显示信息,但未将其传递给Table1
型号1:
public int id { get; set; }
public string JobNo { get; set; }
public string DelNo { get; set; }
public Nullable<int> DeptToPack { get; set; }
public string PackNo { get; set; }
public Nullable<decimal> TargetHrs { get; set; }
public Nullable<System.DateTime> PackingDate { get; set; }
public virtual Table2 Table2{ get; set; }
模型2:
public Table2()
{
this.Table1= new HashSet<Table1>();
}
public int id { get; set; }
public string Dept { get; set; }
public virtual ICollection<Table1> Table1{ get; set; }
组合模型:
public class Combined
{
public Table1 Table1 { get; set; }
public Table2 Table2{ get; set; }
}
视图当前显示所有字段的文本编辑器,可以使用SaveChanges()编辑和保存到数据库;在HomeController上的Create Action
下创建动作
public ActionResult Create()
{
IEnumerable<SelectListItem> items = _db.Table2
.Select(c => new SelectListItem
{
Value = c.Dept,
Text = c.Dept
});
ViewBag.Dropdownlist = items;
return View();
}
[HttpPost]
public ActionResult Create(Table1 table1)
{
if (ModelState.IsValid)
{
_db.Table1.Add(table1);
_db.SaveChanges();
return RedirectToAction("Index");
}
return View(table1);
}
视图显示table1中的信息和table2中的一个字段。我似乎遇到了@ Html.DropDownList元素
的问题我目前有(下面)显示数据,但无法处理到Table1
@Html.DropDownList("Table1.Field1", (IEnumerable<SelectListItem>) ViewBag.DropDownList)
希望图像更好地解释它,填充的输入框将保存到Table1 除了1个字段,它是来自Table2的{InfoToPass}列的下拉列表,其中可以选择4个选项中的1个,然后该值以及所有其他输入将保存到Table1
答案 0 :(得分:0)
您需要创建一个table1对象,并将相关值从传递给控制器的对象传递给它,然后对新的table2对象以及与之相关的参数执行相同的操作。一旦两者都适当填充,保存到各自的表并保存更改。
在整理出两个对象之后,你会以这样的方式结束以保存:
_db.Table2.Add(table2);
_db.Table1.Add(table1);
_db.SaveChanges();
答案 1 :(得分:0)
我的方案涉及连接几个表以提供某个列值(因此您可以忽略linq查询),这将显示在下拉列表中。然后,用户可以从下拉列表中选择值(如果有),然后可以将其保存到另一个表( Table1 )。
创建视图:
@model TharInfo2.Models.Combined
<div class="editor-field">
@Html.DropDownListFor(model => model.Table1.DelNo, (IEnumerable<SelectListItem>)ViewBag.Rev)
</div>
创建控制器:
public ActionResult Create()
{
var rd = RouteData.Values["jobno"];
var query = (from t in _db.table3
join d in _db.table2 on t.delivery_number equals d.ID
join m in _db.table4 on d.OrderNo equals m.JobNo
where m.JobNo == rd
select new
{
t.rev_delivery_number
});
IEnumerable<SelectListItem> rev_del = query
.Select(c => new SelectListItem
{
Value = c.rev_delivery_number,
Text = c.rev_delivery_number
});
ViewBag.Rev = rev_del;
return View();
}
[HttpPost]
public ActionResult Create(Table1 table1)
{
if (ModelState.IsValid)
{
_db.Table1.Add(table1);
_db.SaveChanges();
return RedirectPermanent("Index");
}
return View(table1);
}