在 Post-Action .NET MVC 中将一个模型的数据添加到另一个模型

Adding a model's data to another model in Post-Action .NET MVC

全部。这是我在 .NET MVC 上的第一个项目。我的 post 操作遇到问题。我想要做的就是从模型 A 中获取数据,然后 post 将其返回到模型 B。但是当我按下按钮时,所有值 returns 都对数据库为空。 这是我的代码。 (我对编码非常缺乏经验,请耐心等待。)

模特电影

 public class Movie
    {
        public int MovieID{ get; set; }
        public string MovieAdi{ get; set; }
        public string MovieAciklama{ get; set; }
        public int TurID { get; set; }
        public int TemaID { get; set; }
        public int PlatformID { get; set; }
    }

模特建议

    public class Suggestion
    {     
        public int Id { get; set; }
        public string MovieAdi{ get; set; }
        public string MovieAciklama{ get; set; }
        public int TurID { get; set; }
        public int TemaID { get; set; }
        public int PlatformID { get; set; }
    }

我的控制器

  public ActionResult SuggestionList()
        {
            var model = db.Suggestion;
            return View(model.ToList());
        }

        [HttpPost]
        public ActionResult SuggestionList(Suggestion model)
        {
            
            Movie pmovie= new Movie();

            pmovie.MovieAdi= model.MovieAdi;
            pmovie.TurID = model.TurID;
            pmovie.TemaID = model.TemaID;
            pmovie.PlatformID = model.PlatformID;
            

            db.Movie.Add(pmovie);
            db.SaveChanges();
 
            return RedirectToAction("Index"); //index.cshtml is where i show all of the movies.

        }

我同时使用了Displayfor和HiddenFor。 这是 SuggestionList.cshtml @model IEnumerable<NProject.Models.Suggestion>

 @using (Html.BeginForm("SuggestionList", "Panel", FormMethod.Post))
    {
        <table style="position:absolute; left:35%; top:30%;">

            <tr>
                <th>
                    <label>MovieID</label>
                </th>
                <th>
                    <label>MovieAdi</label>
                </th>
                <th>
                    <label>PlatformID</label>
                </th>
                <th>
                    <label>TemaID</label>
                </th>
                <th>
                    <label>TurID</label>
                </th>
                <th>
                    <label>Add it.</label>
                </th>
            </tr>

            @foreach (var item in Model)
            {
                <tr>
                    <td style="padding:20px;">
                        @Html.HiddenFor(modelItem => item.Id)
                        @Html.DisplayFor(modelItem => item.Id)
                    </td>
                    <td>
                        @Html.HiddenFor(modelItem => item.MovieAdi)
                        @Html.DisplayFor(modelItem => item.MovieAdi)
                    </td>
                    <td>
                        @Html.HiddenFor(modelItem => item.PlatformID)
                        @Html.DisplayFor(modelItem => item.PlatformID)
                    </td>
                    <td>
                        @Html.HiddenFor(modelItem => item.TemaID)
                        @Html.DisplayFor(modelItem => item.TemaID)
                    </td>
                    <td>
                        @Html.HiddenFor(modelItem => item.TurID)
                        @Html.DisplayFor(modelItem => item.TurID)
                    </td>
                    <td>        
                        <button class="btn btn-success">Add the suggestion.</button>
                    </td>

                </tr>
            }

        </table>

    }

首先,视图中的每一行都必须有自己的表单。

其次 @Html.HiddenFor(model => item.Id) 模型值变为“item.Id”,但您的模型属性是“Id”、“Name”...而不是项目“xx”。所以你应该使用 like @Html.Hidden("Id",value)

@foreach(var item in Model){
  @using (Html.BeginForm("SuggestionList", "Panel", FormMethod.Post)){
      <tr>
         <td style="padding:20px;">
             @Html.Hidden("Id",item.Id)
             @Html.DisplayFor(modelItem => item.Id)
         </td>
         <td>
            @Html.Hidden("MovieAdi",item.MovieAdi)
            @Html.DisplayFor(modelItem => item.MovieAdi)
         </td>
          .....
          .....
          .....
        <button class="btn btn-success">Submit</button>

      }
    }