[英]Passing whole model to controller from view via link
我想将整个模型传递给控制器。 现在它什么也没通过,我也不知道为什么。 进入此页面时,模型会部分填充,因此它至少应包含一些信息。
问题:当我单击视图上的按钮时,模型没有传递给控制器。 甚至没有填充部分!
视图(包含部分填充的模型)
@{
ViewBag.Title = "Winkelmand";
Layout = "~/Views/Shared/_Layout3.cshtml";
}
@model IntroSport.Models.Bestel
<br />
<br />
@if (Model.winkelmand.facturen != null)
{
<table style=" width:auto; height:auto; border-style:solid; border-color:black;">
<tr><th>Artikelnummer</th><th>Merk</th><th>Naam</th><th>Prijs</th><th>Aantal</th></tr>
@for (int i = 0; i < Model.winkelmand.facturen.Count; i++)
{
<tr>
<td>@Model.winkelmand.facturen[i].product.ProductID</td>
<td>@Model.winkelmand.facturen[i].product.Merk</td>
<td>@Model.winkelmand.facturen[i].product.Naam</td>
<td>€@Model.winkelmand.facturen[i].product.Prijs</td>
<td >@Model.winkelmand.facturen[i].Aantal</td>
</tr>
}
</table>
}
<br />
<hr />
<b>Totaal: </b>€ @Model.winkelmand.Totale_prijs
<a href="@Url.Action("Klantoverzicht", "Winkelmand", Model)">Bestel!</a>
控制器:
public ActionResult KlantOverzicht(Bestel bestel)
{
return View(bestel);
}
您将无法简单地将整个模型提供给@Url.Action
并让它创建与模型中每个字段的链接。
本质上,您将需要“手动”创建链接!
从您拥有的视图来看,似乎用户没有更改任何信息,并且很可能是您从数据库中提取了要显示的信息,因此,如果您确实创建了传递模型的链接,则该信息将与数据库中的数据。
我的建议是,与其将未更改的模型发布到服务器,不如将对象的ID传递到视图中,并让视图从数据库中检索对象。
<a href="@Url.Action("Klantoverzicht", "Winkelmand", new { id = Model.Id })">Bestel!</a>
您可以使用<form>
将Model
发送到控制器。
或通过链接发送所有属性,并在实际操作中将它们收集到新模型中。
<a href="@Url.Action("Klantoverzicht", "Winkelmand",
new {
pId = Model.ProductID,
mark = Model.Merk,
name = Model.Naam,
price = Model.Prijs,
number = Model.Aantal,
})">Bestel!</a>
实际上:
public ActionResult KlantOverzicht(int pId, string mrk, string nam, double price, int number )
{
Bestel model = new Bestel();
model.ProductID = pId;
model.Merk = mark;
model.Naam = name;
model.Prijs = price;
model.Aantal = number;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.