0
我有一個三表TaskModels,TaskAssigned和Users(AspNetUsers)。使用任務任務模型,我正在創建新任務,並使用任務分配模型將此任務分配給用戶。一切工作正常,但是當我在圖像中發佈時,我只是將用戶ID和任務ID分配給用戶。但我想看到用戶名稱任務名稱,而不是他們的ID。這是我的代碼和結果img。EntityFramework項目MVC中的多對多關係
public class TaskAssigned
{
public int Id { get; set; }
public int TaskModelId { get; set; }
public int UserId { get; set; }
public TasksModel TasksModel { get; set; }
public ApplicationUser User { get; set; }
}
public class TasksModel
{
public int Id { get; set; }
[Required(ErrorMessage = "Heading is required")]
public string Heading { get; set; }
[Required(ErrorMessage = "Content is required")]
public string Content { get; set; }
[Required(ErrorMessage = "Start Date is required")]
[DisplayName(displayName: "Start Date")]
public DateTime StartDate { get; set; }
[Required(ErrorMessage = "Deadline is required")]
[DisplayName(displayName: "Deadline")]
public int DeadlineTask { get; set; }
}
public class ApplicationUser
{
public string Name { get; set; }
public List<TaskAssigned> TaskAssigneds { get; set; }
}
這裏是我的TaskAssignedsController
public class TaskAssignedsController : Controller
{
private ApplicationDbContext db = new ApplicationDbContext();
// GET: TaskAssigneds
public ActionResult Index()
{
var list = db.TaskAssigneds.Include(o => o.TasksModel).Include(o => o.User);
return View(list.ToList());
}
// GET: TaskAssigneds/Create
public ActionResult Create()
{
ViewBag.TaskModelId = new SelectList(db.TasksModels,"Id", "Heading");
ViewBag.UserId = new SelectList(db.Users, "ApplicationUserId", "UserName");
return View();
}
// POST: TaskAssigneds/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,TaskModelId,UserId")] TaskAssigned taskAssigned)
{
if (ModelState.IsValid)
{
db.TaskAssigneds.Add(taskAssigned);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.TaskModelId = new SelectList(db.TasksModels, "Id", "Heading", taskAssigned.TasksModel.Heading);
ViewBag.UserId = new SelectList(db.Users, "ApplicationUserId", "UserName", taskAssigned.User.UserName);
return View(taskAssigned);
}
我不需要TaskAssigned表嗎?或者我只是添加一個TasksAssignedViewModel? – muradheydarov
@muradheydarov你需要的表。我們只是在'TasksAssignedViewModel'中轉換它。我建議你閱讀[這篇文章](https://stackoverflow.com/questions/10857655/what-does-query-projection-mean-in-entity-framework)瞭解投影如何工作。 – Alisson
我做了你寫的所有內容,但在視圖模型中返回null。我找不到問題在哪裏。我可以在哪裏犯錯誤? – muradheydarov