【发布时间】:2020-05-19 11:12:48
【问题描述】:
我的控制器动作被调用了两次。
我点击了<a id="editOnay">链接,调用了两次操作。
我的控制器操作
[HttpGet]
public async Task<IActionResult> AddEdit(Guid? id, Guid ptalepid, DateTime? ptaleptarih, Guid? pharcamatip, string ptalepbaslik)
{
// ...........
ViewData["_talepBaslik"] = ptalepbaslik;
// ....................
}
我的 index.cshtml
< script >
jQuery(document).ready(function() {
$('body').on('change', '#item_Key_Degerlendirmeid', function() {
var _talepid = $('#inpDegerlendirmetalepid').val();
var selectedValue = $(this).val();
var row = $(this).closest('tr');
var _firmaid = row.find('.firmaid').html().trim();
$.ajax({
url: '/TalepFirma/PatchDegerlendirme',
data: {
ptalepid: _talepid,
pfirmaid: _firmaid,
pdegerlendirmeid: selectedValue
},
method: 'POST'
})
.done()
.fail();
});
$('body').on('change', '#item_Key_Kararid', function() {
var _talepid = $('#inpKarartalepid').val();
var selectedValue = $(this).val();
var row = $(this).closest('tr');
var _firmaid = row.find('.firmaid').html().trim();
$.ajax({
url: '/TalepFirma/PatchKarar',
data: {
ptalepid: _talepid,
pfirmaid: _firmaid,
pkararid: selectedValue
},
method: 'POST'
})
.done()
.fail();
});
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
@using satinalma.Base @using satinalma.Paging @using library.Enums @model PagingList
<Talep>
@{ ViewData["Title"] = "Index"; var lstRoles = Context.Session.GetComplexData
<UserRoles>("userRoles") .FirstOrDefault(a => a.Rolegroupid == (int)RoleEnums.RoleGroup.Talep); var modalIDOnay = "onay-giris"; var areaModalIDOnay = "onay-giris-label"; var modalIDKarar = "karar-giris"; var areaModalIDKarar = "karar-giris-label"; }
<div class="row panelStyle-1">
<div class="col-lg-12">
<section class="panel">
<header class="panel-heading">
<h2> Talep</h2>
</header>
<div class="panel-body">
<a asp-action="Create" class="btn btn-success btn-shadow btn-sm"><i class="fa fa-pencil"></i> Yeni Kayıt</a>
</div>
<div class="panel-body">
<form class="form-inline" method="GET" role="form">
<div class="form-group">
<label class="sr-only" for="Baslik">Başlık</label>
<input class="form-control" autocomplete="off" name="Baslik" id="Baslik" placeholder="Başlık" value='@Model.RouteValue["Baslik"]'>
</div>
<button type="submit" class="btn btn-primary"><i class="fa fa-list"></i> Listele</button>
</form>
<nav aria-label="Talep navigation example">
<partial name="~/Views/Shared/PagerBootstrap4.cshtml" model="@this.Model" />
</nav>
</div>
<div id="no-more-tables">
<table class="table table-striped table-advance table-hover">
<thead>
<tr>
<th>@Html.DisplayNameFor(model => model.Baslik)</th>
<th>@Html.DisplayNameFor(model => model._KurumBirim)</th>
<th>@Html.DisplayNameFor(model => model.Taleptarih)</th>
<th>@Html.DisplayNameFor(model => model._OnayDurum)</th>
<th>#</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model) {
<tr>
<td data-title="@Html.DisplayNameFor(model => model.Baslik)">
@Html.DisplayFor(modelItem => item.Baslik)
</td>
<td data-title="@Html.DisplayNameFor(model => model._KurumBirim)">
@Html.DisplayFor(modelItem => item._KurumBirim)
</td>
<td data-title="@Html.DisplayNameFor(model => model.Taleptarih)">
@Html.DisplayFor(modelItem => item.Taleptarih)
</td>
<td data-title="@Html.DisplayNameFor(model => model._OnayDurum)">
@Html.DisplayFor(modelItem => item._OnayDurum)
</td>
<td data-title="Olaylar">
@if (lstRoles != null) { if ((int)RoleEnums.TalepRoles.Update == (lstRoles.Roles & (int)RoleEnums.TalepRoles.Update)) {
<a data-toggle="tooltip" data-placement="top" title="Düzenle" class="btn btn-primary btn-shadow btn-sm" asp-action="Edit" asp-route-id="@item.Id"><i class="fa fa-pencil"></i> Düzenle</a> } if ((int)RoleEnums.TalepRoles.Delete == (lstRoles.Roles
& (int)RoleEnums.TalepRoles.Delete)) {
<a class="btn btn-danger btn-shadow btn-sm delete" data-id="@item.Id" data-controller="Talep" data-action="UpdateStatus" data-body-message="@item.Baslik - silinsin mi?" data-redirect-url="Talep">
<i class="fa fa-trash-o "></i> Sil
</a>
} }
<div class="btn-group dropup">
<button data-toggle="dropdown" class="btn btn-info btn-shadow dropdown-toggle btn-sm" type="button" aria-haspopup="true" aria-expanded="false">İşlemler <span class="caret"></span></button>
<ul role="menu" class="dropdown-menu">
<li><a target="_blank" asp-controller="TalepMalzeme" asp-action="Index" asp-route-ptalepid="@item.Id">Malzeme Ekle</a></li>
<li class="divider"></li>
<li><a id="editLine" onclick="" data-toggle="modal" asp-controller="TalepOnay" asp-action="AddEdit" data-target="#@modalID" asp-route-ptalepid="@item.Id" asp-route-ptalepbaslik="@item.Baslik">Onaya Gönder</a></li>
@if (item._OnayDurum == "Onaylandı") {
<li class="divider"></li>
<li><a target="_blank" asp-controller="TalepFirma" asp-action="Index" asp-route-ptalepid="@item.Id">Firma Ekle</a></li>
<li><a id="editLine2" onclick="" data-toggle="modal" asp-controller="Mail" asp-action="Create" data-target="#@modalID2" asp-route-ptalepid="@item.Id" asp-route-ptalepbaslik="@item.Baslik">Mail Gönder</a></li>
<li class="divider"></li>
<li><a target="_blank" asp-controller="TalepFirmaFiyat" asp-action="Index" asp-route-ptalepid="@item.Id">Fiyat Ekle</a></li>
<li><a id="editDegerlendirme" onclick="" data-toggle="modal" asp-controller="TalepFirma" asp-action="EditDegerlendirme" data-target="#@modalIDDegerlendirme" asp-route-ptalepid="@item.Id" asp-route-ptalepbaslik="@item.Baslik">Değerlendirme</a></li>
<li><a id="editOnay" onclick="" data-toggle="modal" asp-controller="TalepOnayBelgesi" asp-action="AddEdit" data-target="#@modalIDOnay" asp-route-ptalepid="@item.Id" asp-route-ptalepbaslik="@item.Baslik" asp-route-ptaleptarih="@item.Taleptarih"
asp-route-pharcamatip="@item.Harcamatipid">Onay Belgesi</a></li>
<li><a id="editKarar" onclick="" data-toggle="modal" asp-controller="TalepFirma" asp-action="EditKarar" data-target="#@modalIDKarar" asp-route-ptalepid="@item.Id" asp-route-ptalepbaslik="@item.Baslik">Karar Tutanağı</a></li>
}
</ul>
</div>
</td>
</tr>
}
</tbody>
</table>
</div>
</section>
</div>
</div>
@await Html.PartialAsync("_Modal", new Modal { ID = modalIDOnay, AreaLabelID = areaModalIDOnay, Size = ModalSize.Large }) @await Html.PartialAsync("_Modal", new Modal { ID = modalIDKarar, AreaLabelID = areaModalIDKarar, Size = ModalSize.Large }) @section
Scripts { @{await Html.RenderPartialAsync("_ModalScriptsInit", modalIDOnay);} @{await Html.RenderPartialAsync("_ModalScriptsInit", modalIDKarar);} @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} }
我添加的it.cshtml
< script type = "text/javascript" >
jQuery(document).ready(function() {
//modalda validation için
$.validator.unobtrusive.parse("#AddEdit");
$('#Belgetarih').datepicker({
uiLibrary: 'bootstrap',
locale: 'tr-tr',
format: 'dd-mm-yyyy',
weekStartDay: 1
});
var array = @(Html.Raw(JsonConvert.SerializeObject(ViewBag.gorevliList)));
$('.selectpicker').selectpicker();
$('.selectpicker').selectpicker('val', array);
}); <
/script>
@using satinalma.Base @using Newtonsoft.Json @model satinalma.Models.TalepOnayBelgesi
<div class="row">
<div class="col-lg-12">
<section class="panel formRecord">
<form asp-action="AddEdit" id="AddEdit">
@await Html.PartialAsync("_ModalHeader", new ModalHeader { Heading = String.Format("Onay Belgesi: {0} ",@Model.Id == Guid.Empty ? "Ekle" : "Düzelt") })
<div class="modal-body">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="Id" />
<input type="hidden" asp-for="Talepid" />
<input type="hidden" asp-for="Status" />
<div class="row">
<div class="col-md-3 form-group">
<label asp-for="Belgetarih" class="control-label">Belge Tarihi</label>
<input asp-for="Belgetarih" type="text" class="form-control" width="200" autocomplete="off">
<span asp-validation-for="Belgetarih" class="text-danger"></span>
</div>
<div class="col-md-3 form-group">
<label asp-for="Belgesayi" class="control-label">Belge Sayısı</label>
<input asp-for="Belgesayi" class="form-control" />
<span asp-validation-for="Belgesayi" class="text-danger"></span>
</div>
</div>
<div class="row">
<div class="col-md-3 form-group">
<label asp-for="Butcetertibi" class="control-label">Bütçe Tertibi</label>
<input asp-for="Butcetertibi" class="form-control" />
<span asp-validation-for="Butcetertibi" class="text-danger"></span>
</div>
<div class="col-md-3 form-group">
<label asp-for="Saymanlik" class="control-label">Saymanlık</label>
<input asp-for="Saymanlik" class="form-control" />
<span asp-validation-for="Saymanlik" class="text-danger"></span>
</div>
</div>
<div class="row">
<div class="col-md-4 form-group">
<label asp-for="Gorevliler" class="control-label">Satın Alma Görevlileri</label>
<select name="Gorevliler" class="selectpicker" title="Seçiniz" data-show-subtext="true" multiple data-width="fit" data-container="body" data-live-search="true" asp-items="ViewBag.cmbKullanici"></select>
</div>
<div class="col-md-4 form-group">
<label asp-for="Gerceklestimeid" class="control-label">Gerçekleştirme Görevlisi</label>
<select asp-for="Gerceklestimeid" class="form-control" asp-items="ViewBag.cmbKullanici"></select>
<span asp-validation-for="Gerceklestimeid" class="text-danger"></span>
</div>
<div class="col-md-4 form-group">
<label asp-for="Harcamaid" class="control-label">Harcama Yetkilisi</label>
<select asp-for="Harcamaid" class="form-control" asp-items="ViewBag.cmbKullanici"></select>
<span asp-validation-for="Harcamaid" class="text-danger"></span>
</div>
</div>
@await Html.PartialAsync("_ModalFooter", new ModalFooter { })
</div>
</form>
</section>
</div>
</div>
【问题讨论】:
标签: javascript html asp.net-core-mvc