繁体   English   中英

通过链接将整个模型从视图传递到控制器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM