C# Asp.NETMVC和模型被发送回客户端

C# Asp.NETMVC和模型被发送回客户端,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个屏幕,目前正在绘制中。但我需要在用户单击“添加”按钮时将项目添加到表中。我期望发生的是Post操作将模型中的一些属性添加到列表中,然后将更新后的模型发送回客户端。因此,用户在控件中输入了一个值,单击“添加”。。。完整模型将被发送回控制器。。。控制器读取属性并将它们添加到我的列表(这是模型的一部分)。然后将模型发送回视图,并根据列表中的项目构建一个模型 目前,我正在尝试: public ActionResult AccountTransaction() { Li

我有一个屏幕,目前正在绘制中。但我需要在用户单击“添加”按钮时将项目添加到表中。我期望发生的是Post操作将模型中的一些属性添加到列表中,然后将更新后的模型发送回客户端。因此,用户在控件中输入了一个值,单击“添加”。。。完整模型将被发送回控制器。。。控制器读取属性并将它们添加到我的列表(这是模型的一部分)。然后将模型发送回视图,并根据列表中的项目构建一个模型

目前,我正在尝试:

 public ActionResult AccountTransaction()
    {

        List<AccountDto> accounts = Services.AccountServices.GetAccounts(false);
        List<PayeeDto> payees = Services.PayeeServices.GetPayees();
        List<CostCenterDto> costCenters = Services.CostCenterServices.GetCostCenters();
        List<TransactionTypeDto> transactionTypes = Services.TransactionTypeServices.GetTransactionTypes();

        AccountTransactionView v = new AccountTransactionView
                                       {
                                           Accounts = (from a in accounts
                                                       where a.Deleted == false
                                                       select new SelectListItem
                                                                  {
                                                                      Text = a.Description,
                                                                      Value = a.AccountId.ToString(),
                                                                      Selected = false
                                                                  }

                                                      ),
                                           Payees = (from p in payees
                                                     where p.Deleted == false
                                                     select new SelectListItem
                                                                {
                                                                    Selected = false,
                                                                    Text = p.Name,
                                                                    Value = p.PayeeId.ToString()

                                                                }),
                                           TransactionTypes = (from tt in transactionTypes

                                                               select new TransactionTypeView
                                                                          {
                                                                              Deleted = false,
                                                                              Description = tt.Description,
                                                                              Value = tt.TransactionTypeId
                                                                          }).ToList(),

                                           CostCenters = (from cc in costCenters
                                                          where cc.Deleted == false
                                                          select new SelectListItem
                                                                     {
                                                                         Selected = false,
                                                                         Text = cc.Name,
                                                                         Value = cc.CostCenterId.ToString()
                                                                     }),
                                           Deleted = false,
                                           SelectedAccountId = 0,
                                           SelectedCategoryId = 0,
                                           SelectedSubCategoryId = 0,
                                           SelectedBudgetId = 0,
                                           TransactionDate = DateTime.Now
                                       };


        return View(v);
    }

    [HttpPost]
    public ActionResult AccountTransaction(AccountTransactionView model)
    {
        model.TransactionSplitLines.Add(new TransactionSplitLine
                                            {Amount = "100", Category = "Test", SubCategory = "Test More"});
        return View("AccountTransaction", model);
    }
public ActionResult AccountTransaction()
{
List accounts=Services.AccountServices.GetAccounts(false);
列出受款人=Services.PayeeServices.GetPayees();
List costCenters=Services.CostCenterServices.GetCostCenters();
List transactionTypes=Services.TransactionTypeServices.GetTransactionTypes();
AccountTransactionView v=新建AccountTransactionView
{
Accounts=(来自Accounts中的a)
其中a.Deleted==false
选择新的SelectListItem
{
Text=a.说明,
Value=a.AccountId.ToString(),
所选=错误
}
),
收款人=(来自收款人中的p)
其中p.Deleted==false
选择新的SelectListItem
{
所选=假,
Text=p.名称,
Value=p.payeId.ToString()
}),
TransactionTypes=(来自TransactionTypes中的tt)
选择new TransactionTypeView
{
已删除=错误,
描述=tt.描述,
Value=tt.TransactionTypeId
}).ToList(),
成本中心=(来自成本中心的cc)
其中cc.Deleted==false
选择新的SelectListItem
{
所选=假,
Text=cc.Name,
Value=cc.CostCenterId.ToString()
}),
已删除=错误,
SelectedAccountId=0,
SelectedCategoryId=0,
SelectedSubcategory ID=0,
SelectedBudgetId=0,
TransactionDate=DateTime.Now
};
返回视图(v);
}
[HttpPost]
public ActionResult AccountTransaction(AccountTransactionView模型)
{
model.TransactionSplitLines.Add(新建TransactionSplitLine
{Amount=“100”,Category=“Test”,SubCategory=“Test More”});
返回视图(“AccountTransaction”,模型);
}
因此,加载页面时将调用“public ActionResult AccountTransaction()”。。。HttpPost方法正在被击中。。。但是当我返回视图时。。。前端失败,因为模型现在似乎是空的。视图在此失败:

            <td align="right">
            <% foreach (var tt in Model.TransactionTypes)
               {%>
            <%=tt.Description %>
            <%=Html.RadioButton("SelectedTransactionTypeId", tt.Value) %><br />
            <%
                }%>
        </td>



这是突然发生的,Model.TransactionTypes现在为空。。。但是,为什么,因为我认为我返回的是同一个模型。

是整个
模型
属性
为空
还是仅仅是
交易类型
属性?记住,模型绑定的工作原理是从
post
中的数据构建对象。对于要在
HttpPost
版本的
AccountTransaction
方法的绑定模型中出现的每个
TransactionTypeView
对象,它们需要出现在发送到服务器的
表单中。讨论如何绑定对象集合(以及如何构造标记来处理它)。

谢谢。当我取回模型时,它不是空的。。。但是我在第一个方法中为模型(transactionTypes)创建的属性都是null。但是,返回的值(日期编辑框..等)存在。看起来我需要再次构建这些列表值?这是最简单的解决方法,而且不会在您的页面上添加大量潜在不需要的数据。谢谢