简体   繁体   English

ASP.NET 核心将带有链接数据的实体传递给查看和返回

[英]ASP.NET Core Passing Entity with Linked Data to View and Back

I'm passing an object with a N:M relationship to a view:我将具有 N:M 关系的 object 传递给视图:

public class Project
{
    [Key]
    public int ProjectId { get; set; }
    ...    
    public virtual ICollection<CrewMember> CrewMembers { get; set; }
}

In the controller, I eager load the collection and pass the object to the view:在 controller 中,我急切地加载集合并将 object 传递给视图:

public IActionResult Modify(int? id)
{
    var obj = _db.Projects.Where(i => i.ProjectId == id).Include(c => c.CrewMembers).First();
    return View(obj);
}

The view looks like this:视图如下所示:

<div class="col-md-7">
    <form method="post" enctype="multipart/form-data">
        <input asp-for="ProjectId" hidden />
        <input asp-for="CrewMembers" hidden />
        ...
        <button type="submit">Update</button>
    </form>
</div>

The data seems to "arrive" on the view just fine (if I look at the Model object, it contains the CrewMembers collection), however when I submit the form, the "Projects" collection returns empty:数据似乎“到达”视图就好了(如果我查看 Model object,它包含 CrewMembers 集合),但是当我提交表单时,“项目”集合返回空:

//POST
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Modify(Project obj)
{
    //obj.CrewMembers IS NOW EMPTY(!)

    _db.Projects.Update(obj);
    _db.SaveChanges();

    return RedirectToAction("Index");
}

So how can I preserve the Collection when passing it to/from the view?那么在将集合传递到视图/从视图传递时如何保留集合? It seems the <input asp-for="CrewMembers" hidden /> trick doesn't work...似乎<input asp-for="CrewMembers" hidden />技巧不起作用......

Try:尝试:

[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Modify([Bind("ProjectId,CrewMembers")]Project obj)
{
    //obj.CrewMembers IS NOW EMPTY(!)

    _db.Projects.Update(obj);
    _db.SaveChanges();

    return RedirectToAction("Index");
}

And in the view, use one input for each element of the list.在视图中,为列表的每个元素使用一个输入。

@for(int i=0;i<Model.CrewMembers.Count();i++)
{
<input type="hidden" asp-for="CrewMembers[i].xxxx"/>
<input type="hidden" asp-for="CrewMembers[i].xxxx"/>
<input type="hidden" asp-for="CrewMembers[i].xxxx"/>
...
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 c# asp.net core mvc 将数据从视图传递到控制器并从控制器返回到视图 - c# asp.net core mvc passing data from view to controller and from controller back to view ASP.NET 核心 MVC - 将 Model 数据从视图传递回 Controller - ASP.NET Core MVC - Passing Model Data Back to Controller from View ASP.NET Core类不传递数据 - Asp.Net Core class not passing data 数据未在asp.net核心中传递 - data is not passing in asp.net core 在 Entity Framework Core 和 ASP.NET Core 中加载相关数据 - Loading related data in Entity Framework Core and ASP.NET Core 如何将图像上传到数据库并显示回视图 ASP.NET Core MVC - How to upload an image into a data base and display it back to the view ASP.NET Core MVC ASP.Net将ViewModel传递给View(底层实体框架) - ASP.Net Passing ViewModel to View (Underlying entity framework) 绑定子虚拟 class 数据以在 Entity Framework Core 的 ASP.NET MVC 中查看 - Binding child virtual class data to view in ASP.NET MVC for Entity Framework Core 将数据从视图传递到控制器asp.net核心剃刀页面 - Passing data from view to controller asp.net core razor pages ASP.NET Core MVC:编辑用户,将数据从视图传递到 controller 时出现问题,身份 - ASP.NET Core MVC : edit user, problem with passing data from view to controller ,identity
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM