“编辑客户”页面有一个部分视图,显示他/她的所有发票:
@{Html.RenderAction("_ShowInvoices", "Adresser", new { id = Model.Adressid });}
该部分视图具有以下链接,用于在新页中打开“发票编辑”页面:
Html.ActionLink(item.InvoiceNr, "Edit", "Invoice", new { id = item.InvoiceNr }, null)
但是现在我想在我的编辑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.In人声”类型的模型项。 第138行:@Html.Partial("_InvoiceEdit")
那我哪里错了?使用@Html.Partial()是错误的吗?我该换个办法吗?请把你的意见告诉我!
发布于 2014-01-29 06:32:40
您可以不使用@Html.Partial("_InvoiceEdit")
:
<div id="edit_invoices">
@Html.Partial("_InvoiceEdit")
</div>
主要是因为您应该像@Html.Partial("_InvoiceEdit", model)
一样将一个模型传递给它,而且由于该页面的模型不是正确的类型,它无论如何都不能工作(因此,您的错误)。
@Ajax.ActionLink
将处理将部分加载到<div id="edit_invoices">
中。
发布于 2014-01-29 06:13:42
您需要像下面这样传递_InvoiceEdit
的模型
@Html.Partial("_InvoiceEdit", invoices)
这将使用返回地址模型的相同请求呈现部分视图,但是您的_InvoiceEdit需要发票类型。在这种情况下,我们需要填充发票并将其发送到视图以用于呈现。
备选方案2:
如果您没有将发票填充为当前操作的一部分,则可以启动一个新的请求,以便根据id获取发票。
@{Html.RenderAction("EditInvoice", "Invoices", new { id = Model.id});}
https://stackoverflow.com/questions/21433457
复制相似问题