2014-01-29 131 views
0

我的編輯客戶網頁有顯示所有他/她的發票的局部視圖:加載局部視圖

@{Html.RenderAction("_ShowInvoices", "Adresser", new { id = Model.Adressid });} 

這部分觀點有此鏈接在新頁面中打開發票編輯頁面:

Html.ActionLink(item.InvoiceNr, "Edit", "Invoice", new { id = item.InvoiceNr }, null) 

但現在我想在我的Edit Custormer頁面的另一個部分視圖中打開發票編輯頁面。所以我改變了發票編輯頁面上的鏈接來

@Ajax.ActionLink(item.InvoiceNr.ToString(), "EditInvoice", "Invoice", new { id = item.InvoiceNr }, new AjaxOptions() { UpdateTargetId = "edit_invoices" }) 

發票控制器:

public PartialViewResult EditInvoce(int id) 
    { 
     Invoices invoice = db.Prens.Find(id); 
     return PartialView("_InvoiceEdit", invoice); 
    } 

而且添加到了我的編輯客戶網頁

 <div id="edit_invoices"> 
      @Html.Partial("_InvoiceEdit") 
     </div> 

這對於現在包含這讓我可以看到它的工作..

@model Pren.Models.Invoices 
@Html.DisplayFor(model => model.InvoiceNr) 

我還添加了這對我的客戶編輯頁面

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 

我得到的錯誤是(Pren.Models.Adress是客戶模式)

傳遞到字典的模型產品類型'Pren.Models.Adress',但是這個字典需要一個'Pren.Models.Invoices'類型的模型項。

行138:@ Html.Partial( 「_ InvoiceEdit」)

那麼,我錯了? @ Html.Partial()是錯誤的嗎?我應該以另一種方式做這個嗎?請給我你的輸入!

+1

從div'edit_invoices'中刪除'@ Html.Partial(「_ InvoiceEdit」)'會發生什麼? – MikeSmithDev

+0

那,包括一些錯別字解決了我的問題,哈! – Rob

+1

我將其作爲答案。我將編輯您的問題以從中刪除答案,因爲這是令人困惑的。 – MikeSmithDev

回答

1

您可以將@Html.Partial("_InvoiceEdit")出來的:

<div id="edit_invoices"> 
    @Html.Partial("_InvoiceEdit") 
</div> 

主要是因爲你應該通過一個模型,它像@Html.Partial("_InvoiceEdit", model),並自該頁面的模式是不正確的類型,其止跌無論如何工作(因此,你的錯誤)。

@Ajax.ActionLink將處理加載部分到<div id="edit_invoices">

0

。你需要通過對_InvoiceEdit模型像下面

@Html.Partial("_InvoiceEdit", invoices) 

,這會使得與返回地址模型相同的請求的部分觀點,但是你_InvoiceEdit需要發票的類型。在這種情況下,我們需要填充發票並將其發送到視圖以用於呈現。

選項2:

如果不填充發票作爲當前行動的一部分,你可以發起一個新的請求,我們將根據該ID的發票。

@{Html.RenderAction("EditInvoice", "Invoices", new { id = Model.id});}