我看到显示公司的 CardView 。每张卡都有添加新的BankAccount按钮以显示“添加新银行帐户”模式弹出窗口。我的看法如下:
@for (int i = 0; i < Model.Companies.Count(); i += 3)
{
<div class="row-fluid">
<div class="span4">
<div class="box corner-all">
<div class="box-header grd-white">
<div class="header-control">
<div>
<ul class="breadcrumb-nav pull-right">
<li class="btn-group">
<a href="#" class="btn btn-small btn-link dropdown-toggle" data-toggle="dropdown">
<i class="icofont-cogs"></i>Controls
<i class="icofont-caret-down"></i>
</a>
<ul class="dropdown-menu">
<li><a href="#MyCreate" role="button" class="" data-toggle="modal">Add new bankaccount</a></li>
<li><a href="#collapse" data-toggle="tab">@Html.ActionLink("Edit", "Edit", Model.Companies.ElementAt(i), new { target = "_blank" })</a></li>
</ul>
</li>
</ul>
@{Html.RenderPartial("BankCreateModal", new BankAccountCreateViewModel { BankAccount = new Invoice.Model.BankAccount(), TaxTypes = Model.TaxTypes, CompanyID = Model.Companies.ElementAt(i).ID });}
</div>
</div>
<span>@Model.Companies.ElementAt(i).ShortName</span>
</div>
<div class="box-body">
<table>
<tr>
<td rowspan="2">
<div class="resume-photo">
<img src="~/Content/img/LogoFiles/@Model.Companies.ElementAt(i).LogoFile" style="width: 50px; height: 45px;"/>
</div>
</td>
<td>@Model.Companies.ElementAt(i).FullName</td>
</tr>
</table>
<div class="alert alert-info">
@*<button type="button" class="close" data-dismiss="alert">×</button>*@
<strong></strong>@Model.Companies.ElementAt(i).CompanyDescription
</div>
</div>
<div style="text-align: center; padding-left: 22px;">
<div class="thumbnails pricing-table color-black">
<div class="span3 active grd-white box-shadow" style="width: 270px;">
<div class="bank_details_expand">
<div class="features">
<div id="slideshow-area">
<div id="slideshow-previous"></div>
<div id="slideshow-next"></div>
<div id="slideshow-scroller">
<div id="slideshow-holder">
@foreach (var bank in Model.BankAccounts.ElementAt(i))
{
<div class="slideshow-content">
<div class="alert alert-info">
<!--box body-->
<div class="box-body">
<!-- Button to trigger modal -->
<!-- Modal -->
@{Html.RenderPartial("BankEditModal", new BankAccountEditViewModel { BankAccount = bank, TaxTypes = Model.TaxTypes });}
</div>
<!--/box body-->
<ul style="text-align: left;">
<li></li>
<li><span style="font-weight: bolder; color: #0B72E0">Bank Name:</span>
<span style="font-style: italic;">@bank.BankName</span></li>
<li><span style="font-weight: bolder; color: #0B72E0">Corr. Account:</span>
<span style="font-style: italic;">@bank.CorrespondentAccount</span> </li>
<li><span style="font-weight: bolder; color: #0B72E0">IBAN:</span>
<span style="font-style: italic;">@bank.IBAN </span></li>
<li><span style="font-weight: bolder; color: #0B72E0">Code:</span>
<span style="font-style: italic;">@bank.Code</span></li>
<li><span style="font-weight: bolder; color: #0B72E0">SWIFT:</span>
<span style="font-style: italic;">@bank.SWIFT</span></li>
<li><span style="font-weight: bolder; color: #0B72E0">Tax Type:</span>
<span style="font-style: italic;">@bank.Tax.Presentage % </span></li>
</ul>
</div>
</div>
}
</div>
</div>
</div>
</div>
</div>
<div class="bank-details-control">
<div class="footer grd-white" data-box="expandBank">
<div>Bank Details</div>
<i class="icofont-chevron-down"></i>
@*<a class="btn btn-block btn-warning" data-box="expandBank">Bank Details</a>*@
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@if (Model.Companies.Count() - 1 > i)
{
@{Html.RenderPartial("BankCreateModal", new BankAccountCreateViewModel { BankAccount = new Invoice.Model.BankAccount(), TaxTypes = Model.TaxTypes, CompanyID = Model.Companies.ElementAt(i + 1).ID });}
}
@if (Model.Companies.Count() - 2 > i)
{
@{Html.RenderPartial("BankCreateModal", new BankAccountCreateViewModel { BankAccount = new Invoice.Model.BankAccount(), TaxTypes = Model.TaxTypes, CompanyID = Model.Companies.ElementAt(i + 2).ID });}
}
}
用于创建银行帐户的 PartialView 如下
@model InvoiceModel.HelperClasses.BankAccountCreateViewModel
<script src="~/Scripts/jquery-1.7.1.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
<div id="MyCreate" class="modal hide fade" tabindex="-1" role="dialog" aria- labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h2 id="myModalLabel">Bank Account</h2>
</div>
<div class="modal-body">
@using (Ajax.BeginForm("CreateModal", new AjaxOptions { UpdateTargetId = "Createmodal", HttpMethod = "Post" }))
{
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.CompanyID)
@Html.HiddenFor(model => model.TaxTypes)
<div class="control-group">
@Html.LabelFor(model => model.BankAccount.BankName)
@Html.EditorFor(model => model.BankAccount.BankName)
@Html.ValidationMessageFor(model => model.BankAccount.BankName)
</div>
<div class="control-group">
@Html.LabelFor(model => model.BankAccount.CorrespondentAccount)
@Html.EditorFor(model => model.BankAccount.CorrespondentAccount)
@Html.ValidationMessageFor(model => model.BankAccount.CorrespondentAccount)
</div>
<div class="control-group">
@Html.LabelFor(model => model.BankAccount.IBAN)
@Html.EditorFor(model => model.BankAccount.IBAN)
@Html.ValidationMessageFor(model => model.BankAccount.IBAN)
</div>
<div class="control-group">
@Html.LabelFor(model => model.BankAccount.Code)
@Html.EditorFor(model => model.BankAccount.Code)
@Html.ValidationMessageFor(model => model.BankAccount.Code)
</div>
<div class="control-group">
@Html.LabelFor(model => model.BankAccount.SWIFT)
@Html.EditorFor(model => model.BankAccount.SWIFT)
@Html.ValidationMessageFor(model => model.BankAccount.SWIFT)
</div>
<div class="control-group">
@Html.LabelFor(model => model.BankAccount.TaxID, new { @class = "control-label" })
<div class="controls">
@Html.DropDownListFor(model => model.BankAccount.TaxID, new SelectList(Model.TaxTypes, "ID", "Name"), new { data_placeholder = "Select Tax Type", data_form = "select2" })
@Html.ValidationMessageFor(model => model.BankAccount.TaxID)
</div>
</div>
<button class="btn btn-primary">Save changes</button>
}
</div>
<div class="modal-footer">
<button class="btn btn-danger" data-dismiss="modal" aria-hidden="true">Close</button>
</div>
因此,当我单击SaveChanges按钮时,我可以为第一家公司创建新银行,但是当在 bankaccountcontroller 中单击其他公司时,我的 CompanyID 与第一家公司相同。我的HTTPPOST操作如下
[HttpPost]
public ActionResult CreateModal(BankAccountCreateViewModel bank)
{
bank.BankAccount.CompanyID = bank.CompanyID;
bankRepository.SaveBankAccount(bank.BankAccount);
return RedirectToActionPermanent("Index");
}
我该如何解决这个问题?我需要第二个或其他 companyID,而不是第一个。