Tamam, ben bir web kullanıcısıyım ama itiraf etmeliyim ki şimdi tamamen bağladım. İşte benim sorunum:JQuery ve Ajax.BeginForm() aynı verinin iki kez gönderilmesi
MVCContrib ızgarası ve JQuery iletişim kutusuna sarılmış bir Ajax formunu oluşturan bir "Hesap Ekle" bağlantısı olan bir sayfam var. İş akışından geçtiğimde her şey ilk kez harika çalışıyor. Yeni bir öğe ekleyebilir ve JQuery/Ajax aracılığıyla ızgarayı yenileyebilirim (yani bence). Ancak, formu ikinci kez eklemeye çalıştığımda, ilk formdaki veriler her zaman gönderilir. Soruna çok uzun zamandır bakıyorum ve tamamen sıkışmış olduğumu itiraf etmeliyim. Btw - Eminim bu tamamen yanlış yapıyorum, bu yüzden daha iyi bir şey önermek için çekinmeyin.
@using (Ajax.BeginForm("SaveCheckAccount", "UserManagement", null, new AjaxOptions { OnSuccess = "onAccountAdded", OnFailure = "onAccountAddedFailed"}, new { id = "accountDetails" }))
{
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.Id)
@Html.HiddenFor(model => model.version)
@Html.HiddenFor(model => model.User_Id)
@Html.HiddenFor(model => model.IsDefault)
<table>
<tr>
<td>
Account Number
</td>
<td>
@Html.TextBoxFor(model => model.AccountNumber)
@Html.ValidationMessageFor(model => model.AccountNumber, "*")
</td>
</tr>
<tr>
<td>
Routing Number
</td>
<td>
@Html.TextBoxFor(model => model.RoutingNumber)
@Html.ValidationMessageFor(model => model.RoutingNumber, "*")
</td>
</tr>
<tr>
<td>
Account Type
</td>
<td>
@Html.DropDownListFor(model => model.AccountType_Id, new SelectList(@accountTypes, "ID", "Name", Model.AccountType_Id))
@Html.ValidationMessageFor(model => model.CheckAccountType)
@Html.ValidationMessageFor(model => model.AccountType_Id, "*")
</td>
</tr>
<tr>
<td>
Bank Name
</td>
<td>
@Html.TextBoxFor(model => model.BankName)
@Html.ValidationMessageFor(model => model.BankName, "*")
</td>
</tr>
<tr>
<td>
Account Name
</td>
<td>
@Html.TextBoxFor(model => model.AccountName)
@Html.ValidationMessageFor(model => model.AccountName, "*")
</td>
</tr>
</table>
}
<script type="text/javascript">
$.ajaxSetup({ cache: false });
</script>
Bu javascript bank.js yatar başlangıçta bu görünümde ekle bağlantısını tıklayarak oluşturulduğu için
function BindCommands(createUrl) {
$("#modalAdd").live("click", function (e) {
var dialogBox = $("<div>");
e.preventDefault();
$(dialogBox).dialog({
autoOpen: false,
resizable: false,
title: 'Create Account',
modal: true,
show: { effect: "blind", duration: 50 },
hide: { effect: "blind", duration: 50 },
open: function (event, ui) {
$.ajax(
{
type: "Get",
url: createUrl,
success: function (result) {
$(dialogBox).html(result);
}
});
},
buttons: {
Save: function() {
$("#accountDetails").submit();
$(this).dialog('close');
},
Cancel: function() {
$(this).dialog("close");
}
}
});
$(dialogBox).dialog('open');
});
}
function onAccountAdded(data, status, xhr) {
$("#accounts-grid").html(data);
};
function onAccountAddedFailed(data, status, xhr) {
alert("Failed");
};
file:
<script type="text/javascript">
$.ajaxSetup({cache:false});
$(document).ready(function() {
var createUrl = '@Url.Action("NewBankAccountDetails", "UserManagement", new {[email protected]})';
BindCommands(createUrl);
});
</script>
@if (Model != null && Model.Id > 0)
{
<tr>
<td class="header" colspan="2">
User Accounts
</td>
</tr>
<tr>
<td>
<a href="#" id="modalAdd">Add Account</a>
</td>
</tr>
Html.RenderPartial("_BankAccountGrid", Model.CheckAccounts);
}
çift ama onun değil değil eğer, yardımcı olur. Günümü kaydetmek için – Worthy7
Thx! –
Bu Cevap doğru bir şekilde işaretlenmelidir. – AlphaTry