【发布时间】:2021-10-30 15:57:51
【问题描述】:
我有以下型号:
public class ActivityType
{
[Key]
public int ActivityTypeId { get; set; }
public string ActivityTypeName { get; set; }
}
public class ActivitySubType
{
[Key]
public int ActivitySubTypeId { get; set; }
public string ActivitySubTypeName { get; set; }
[ForeignKey("ActivityType")]
public int ActivityTypeId { get; set; }
public virtual ActivityType ActivityType { get; set; }
}
public class ActivityRecord
{
[Key]
public int ActivityRecordId { get; set; }
public string ActivityName { get; set; }
[ForeignKey("ActivitySubType")]
public int ActivitySubTypeId { get; set; }
public virtual ActivitySubType ActivitySubType { get; set; }
}
然后从模型ActivityRecord,我有一个控制器可以保存到数据库中。我正在使用脚手架控制器自动生成。在Create 视图中,我创建了一个级联下拉代码。当ActivityType selected时,下拉ActivitySubType将根据数据库上的数据生成项目。它保存到数据库中(成功)。
情况是,当我尝试编辑记录时。如何根据ActivitySubTypeId 的值在ActivityType 下拉列表中绑定ActivityTypeId。我已经通过以下代码得到它:
public async Task<IActionResult> Edit(int? id)
{
var getActivityTypeId = (from a in _db.ActivityRecords
join b in _db.ActivitySubTypes ON a.ActivitySubTypeId equals b.ActivitySubTypeId
join c in _db.ActivityTypes ON b.ActivityTypeId equals c.ActivityTypeId
where a.ActivitySubType == id
select new {
b.ActivityTypeId
}
).FirstOrDefault();
var activityTypeList = (from a in _db.ActivityTypes
select new SelectListItem()
{
Text = a.ActivityTypeName, Value = a.ActivityTypeId.ToString()
}
).ToList();
activityTypeList.Insert(0, new SelectListItem()
{
Text = "Select...",
Value = ""
});
ViewBag.ActivityTypeDropList = activityTypeList;
}
在下拉列表中:
<select id="ActivityTypeId" class="form-control form-control-sm" asp-items="@(new SelectList(ViewBag.ActivityTypeDropList,"Value", "Text"))">
</select>
如何将getActivityTypeId 的结果作为selectedValue 放入ActivityType 的下拉列表中?或者也许有另一种方法来实现这一点?
谢谢。
【问题讨论】:
标签: c# entity-framework .net-core asp.net-core-5.0