在 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>
}
}
全部。这是我在 .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>
}
}