【问题标题】:Why is my MVC controller action being called twice?为什么我的 MVC 控制器操作被调用了两次?
【发布时间】: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


    【解决方案1】:

    1) 确保来源网址正确!

    • JS 网址
    • CSS 网址
    • 图片网址
    <script src="{check here}"></script>
    <link rel="icon" href="{check here}">
    <img id="logo" src="{check here}"/>
    

    2) 解决您的 javascript 错误

    【讨论】:

    • 请指出什么是 Javascript 错误。您的答案看起来不完整
    • 当然我指的是控制台中的错误。似乎可以理解
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 2011-09-04
    相关资源
    最近更新 更多