我的“编辑客户”页面有一个部分视图,显示他/她的所有发票:
@{Html.RenderAction("_ShowInvoices", "Adresser", new { id = Model.Adressid });}
该部分视图具有此链接以在新页面中打开“发票编辑”页面:
Html.ActionLink(item.InvoiceNr, "Edit", "Invoice", new { id = item.InvoiceNr }, null)
但是现在我想在Edit Custormer页面的另一个局部视图中打开Invoice Edit页面。所以我将发票编辑页面上的链接更改为
@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()使用错误吗?我应该这样做吗?请给我你的意见!
答案 0 :(得分:1)
您可以将@Html.Partial("_InvoiceEdit")
退出:
<div id="edit_invoices">
@Html.Partial("_InvoiceEdit")
</div>
主要是因为您应该像@Html.Partial("_InvoiceEdit", model)
那样将模型传递给它,并且因为该页面的模型不是正确的类型,所以它无论如何都不会起作用(因此,您的错误)。
@Ajax.ActionLink
会处理将部分加载到<div id="edit_invoices">
。
答案 1 :(得分:0)
您需要传递_InvoiceEdit
的模型,如下所示
@Html.Partial("_InvoiceEdit", invoices)
这将使用返回地址模型的相同请求呈现部分视图,但是_InvoiceEdit需要发票类型。在这种情况下,我们需要填充发票并将其发送到视图以使用它进行渲染。
选项2:
如果您没有在当前操作中填充发票,则可以根据ID发起新请求以获取发票。
@{Html.RenderAction("EditInvoice", "Invoices", new { id = Model.id});}