ورود

View Full Version : دوبار اجرا شدن دستور insert در دیتابیس با Ajax.BeginForm



ramin149
پنج شنبه 07 شهریور 1392, 10:09 صبح
با سلام .
من دستور ریختن اطلاعات فورم به دیتابیس را به صورت زیر طراحی کردم .


@using (Ajax.BeginForm("RestPlaceNew", "RestPlace", new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
LoadingElementId = "LoadingUpdate",
OnFailure = "CreateFailure",
OnSuccess = "CreateSucces",
}, new { enctype = "multipart/form-data" }))

{
<h2>معرفی مرکز اقامت</h2>
@Html.AntiForgeryToken()
@Html.ValidationSummary("", new {@class="ui-state-error ui-corner-all" ,@id="Messages"})
دستورات html
}

اما وقتی دکمه submit را می زنم Action وخصوص ریختن اطلاعات دوبار اجرا می شود .
وقتی Ajax.BeginForm را به Html.BeginForm تغییرمی دهم بدون هیچ مشکلی کار می کنه .

hakim22
پنج شنبه 07 شهریور 1392, 12:06 عصر
علتش اینه که شما اسکریپت
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
رو دوبار reference داده اید.

مسئله این است که

@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
} 

خودش علاوه بر ارجاع دادن به قسمت Validation یک ارجاع هم به اسکریپت Ajax که در بالا گفته شد میزند. (با فولدر App_start بروید و در قسمت Bundling کد این متد رو مشاهده کنید)

پس رویداد برگشت از سرور هم به View میرود و هم به اسکریپتی که در Layout به صورت دستی اضافه کرده اید.

اگر اسکریپت دستی رو از layout بردارید مشکل حل میشود. یا اینکه قسمت @Scripts.Render("~/bundles/jqueryval") را حذف کنید. که با اینکار Validation یا همان قرمز شدن خطاها از بین میرود