2014-01-29 87 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});}