我使用Asp.Net MVC 5和EF 6。
我有一个模型,让我们称之为" Checkout"。它具有以下属性:
int BuyerId
List<CheckoutItem> Items
CheckoutItem具有以下属性:
int ItemId
decimal Price
bool IsPaid
我希望有一个视图首先显示EditorFor - &gt; BuyerId。当用户输入BuyerId时,视图应该使用Checkout数据进行更新,这些项目显示在列表中,用户可以在其中单击&#34;删除&#34;链接从当前事务中删除该项目(View的当前模型)。当用户单击提交按钮时,我希望控制器使用IsPaid = true更新Checkout.Items列表中的项目。
我理解所有这些所需的逻辑。我遇到的问题是这一切是如何与MVC上下文一起工作的。
目前我有Checkout.cshtml,其模型是买方(由BuyerId访问),其中有一个供用户输入BuyerId的文本框和一个空的<div>
。在.focusout上使用jquery我使用.ajax来调用控制器并返回一个局部视图,&#34; _CheckoutDetail&#34;。 _CheckoutDetail使用Checkout Model显示模型中的信息。
目前_CheckoutDetail有一个表单,但是当我从局部视图提交时,绑定不起作用。
如果这一切都清楚我想要做的事情,我的问题是,实现这一目标的最佳方法是什么?我期望我的部分视图将其模型发布回控制器,但它不起作用。我试过了两次
public async Task<ActionResult> CheckoutDetails(CheckoutViewModel checkout)
和
public async Task<ActionResult> CheckoutDetails([Bind(Include = "BuyerId,Items")] CheckoutViewModel checkout)
在我的控制器定义中。在这两种情况下,我都会收到一条消息&#34;名称&#39;结帐&#39;在当前上下文中不存在&#34;。
感谢您的帮助。