2014-04-03 69 views
1

我想將整個模型傳遞給控制器​​。現在它沒有通過,我不知道爲什麼。該模型在進入此頁面時部分填充,因此它至少應該包含一些信息。通過鏈接從整個模型傳遞給控制器​​

問題:當我點擊視圖上的按鈕時,模型沒有傳遞給控制器​​。甚至沒有填充的部分!

視圖(包含部分填充的模型)

@{ 
    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); 
    } 

回答

0

你就不能簡單地提供整個模型到@Url.Action並讓它創建與模型中每個字段的鏈接。

您基本上需要創建「手工」鏈接!

從您的觀點來看,用戶似乎沒有更改任何信息,並且很可能您從數據庫中提取了所顯示的信息,因此如果您確實創建了在模型中傳遞的鏈接,則信息將與數據庫中的數據匹配。

我的建議是,不要將未改變的模型發佈到服務器上,而只需將對象的Id傳入您的視圖並讓視圖從數據庫中檢索對象。

<a href="@Url.Action("Klantoverzicht", "Winkelmand", new { id = Model.Id })">Bestel!</a> 
+0

感謝您的答覆。關於我如何創建此代碼及其背後的代碼,您絕對正確。事情是; Bestel模型由兩個其他模型組成(模型A和模型B,比方說)。模型A可以從數據庫中獲取,但模型B不可以,看到模型B在用戶按下鏈接後尚未填充。 – Kraishan

0

您可以發送Model<form>到控制器。

或通過鏈接發送所有的屬性,並在行動中收集他們到一個新的模型。

<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; 
} 
相關問題