نمایش نتایج 1 تا 3 از 3

نام تاپیک: چگونه فیلتر ajaxonly رو اعمال کنم؟؟؟

  1. #1
    کاربر جدید آواتار mozhgan_pkdl
    تاریخ عضویت
    شهریور 1396
    محل زندگی
    شیراز
    پست
    6

    چگونه فیلتر ajaxonly رو اعمال کنم؟؟؟

    سلام به همه


    من میخواستم تو یه کنترلر از فیلتر ajaxonly استفاده کنم به این صورت :



    [ajaxonly]



    با توجه به آموزش های توی نت نتونستم کاری کنم و همه ی کد ها ارور میداد لطفا اگر کسی بلده راهنماییم کنه

  2. #2

    نقل قول: چگونه فیلتر ajaxonly رو اعمال کنم؟؟؟

    AjaxOnly در سطح اکشن قابل استفاده هستش و باید بالای Action قرار بگیره.
    ساختار درونش به این شکل هست که از HttpContext.Request.IsAjaxRequest برای تشخیص Ajax بودن Request استفاده میکنه :


    public class AjaxOnlyAttribute : ActionFilterAttribute
    {
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
    if (!filterContext.HttpContext.Request.IsAjaxRequest( ))
    {
    filterContext.Result = new HttpNotFoundResult();
    }
    }
    }


    اگر اروری دارید ، متن ارور رو قرار بدید .

  3. #3
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: چگونه فیلتر ajaxonly رو اعمال کنم؟؟؟

    جهت تکمیل راهنمایی دوستون جناب تاجیک
    فرض کنیم میخایم اطلاعات یک شخص رو ثبت کنیم
    فرم مورد نظر مون بدین شکل طراحی میکنیم


    <div class="panel-body">

    @using (Html.BeginForm("CreatePersonnel","Person", FormMethod.Post,
    new {@class = "form-horizontal", id = "personForm"}))
    {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(false, "", new { @class = "text-danger" })
    <div class="form-group">
    @Html.LabelFor(m => m.PersonnelViewModel.FirstName, new { @class = "control-label col-md-2 col-lg-2 ", @for = "FirstName" })
    <div class="col-md-8 col-lg-8">
    @Html.TextBoxFor(m => m.PersonnelViewModel.FirstName, new { @class = "form-control",id= "FirstName" })
    </div>

    </div>
    <div class="form-group">

    @Html.LabelFor(m => m.PersonnelViewModel.LastName, new { @class = "control-label col-md-2 col-lg-2", @for = "LastName" })
    <div class="col-md-8 col-lg-8">
    @Html.TextBoxFor(m => m.PersonnelViewModel.LastName, new { @class = "form-control", id = "LastName" })
    </div>
    </div>
    <div class="form-group">
    @Html.LabelFor(m => m.PersonnelViewModel.PersonnelCode, new { @class = "control-label col-md-2 col-lg-2", @for = "PersonnelCode" })
    <div class="col-md-8 col-lg-8">
    @Html.TextBoxFor(m => m.PersonnelViewModel.PersonnelCode, new { @class = "form-control",id= "PersonnelCode" })
    </div>

    </div>
    <div class="form-group">

    <button type="button" id="save" style="width: 30%" name="submit" class="btn btn-success col-md-offset-4">
    <i class="fa fa-save"></i> ثبت در سیستم
    </button>

    </div>

    }

    </div>

    برای ثبت اطلاعات فرم هم یک متد بنویسید بدینصورت

    <script>

    $(document).ready(function ()
    {
    $("#save").click(function (e) {

    e.preventDefault();
    var button = $("#save");
    var $form = $("#personForm");
    var validator = $form.data('validator');
    validator.settings.ignore = ':hidden:not(".multiselect")';
    validator.settings.ignore = ":hidden:not(select)";

    var validateForm = function (form) {
    //فعال سازي دستي اعتبار سنجي جي‌كوئري
    var val = form.validate();
    val.form();
    return val.valid();
    };
    //اگر فرم اعتبار سنجي نشده، اطلاعات آن ارسال نشود
    if (!validateForm($form)) return;
    //برای چلوگیری از دوبار کلیک شدن دکمه ثبت
    button.attr('disabled', 'disabled');
    button.val("لطفا صبر کنید");

    $.ajax({
    url: '@Url.Action("CreatePersonnel", "Person")',
    type: "POST",
    data: $form.serialize(), //تمام فيلدهاي فرم منجمله آنتي فرجري توكن آن‌را ارسال مي‌كند

    cache: false,
    complete: function (xhr, status) {
    var data = xhr.responseText;
    if (xhr.status == 403) {
    window.location = options.loginUrl; //در حالت لاگين نبودن شخص اجرا مي‌شود
    }
    else if (status === 'error' || !data)
    {
    $.each(data, function (idx, errorMessage) {
    alert(errorMessage);

    });

    }
    else {
    //دکمه ثبت به حالت اول خود بر میگردد و فعال میشود
    button.removeAttr('disabled');
    button.val("ثبت در سیستم");
    //غیر فعال شدن ولیدیشن پس از ثبت
    $('.validation-summary-errors').addClass('validation-summary-valid');
    $('.validation-summary-errors').removeClass('validation-summary-errors');

    }
    },


    success: function (data)
    {
    if (data.IsSuccess)
    {

    $('#personForm')[0].reset();

    alert('ثبت اطلاعات با موفقیت انجام شد!');


    }
    else
    {

    if (data.errors != null)
    {
    // show model state error
    $.each(data.errors, function (idx, errorMessage)
    {
    alert(errorMessage);

    });


    }

    }

    },
    error: function (xhr, ajaxOptions, thrownError) {
    alert(thrownError + " " + xhr.status);


    }
    });
    });
    });


    </script>




    این هم کدهای کنترلر برنامه

    [HttpGet]
    public virtual ActionResult CreatePersonnel()
    {

    var model = new AddPersonelViewModel () ;

    return View(model);
    }

    [HttpPost]
    [AjaxOnly] //فقط در حالت اي‌جكس قابل دسترسي باشد
    [ValidateAntiForgeryToken]
    public virtual async Task<ActionResult> CreatePersonnel(AddPersonelViewModel model)
    {


    if (!ModelState.IsValid)
    {

    return Content("خطاهای برنامه بررسی کنید");

    }

    var data = new Personnel
    {


    FirstName = model.PersonnelViewModel.FirstName,
    LastName = model.PersonnelViewModel.LastName,
    FullName=model.PersonnelViewModel.FirstName+" "+model.PersonnelViewModel.LastName,
    .....
    };

    _accountService.Value.AddPersonnel(data);


    await SaveAllChangesAsync();//ذخیره در دیتابیس



    return new JsonResult
    {
    Data = new
    {
    IsSuccess=true;
    errors = ModelState.Keys.SelectMany(k => ModelState[k].Errors).Select(x => x.ErrorMessage).ToArray(),

    message="ثبت با موفقیت"

    },

    JsonRequestBehavior = JsonRequestBehavior.AllowGet,

    };

    }

تاپیک های مشابه

  1. پاسخ: 4
    آخرین پست: شنبه 16 دی 1391, 21:57 عصر
  2. چه جوری SQL رو شروع کنم؟؟؟
    نوشته شده توسط navid_ad در بخش SQL Server
    پاسخ: 9
    آخرین پست: سه شنبه 07 خرداد 1387, 17:34 عصر
  3. چگونه برنامه ام رو به نسخه آزمایشی تبدیل کنم؟
    نوشته شده توسط delphi7 در بخش برنامه نویسی در Delphi
    پاسخ: 12
    آخرین پست: پنج شنبه 27 اسفند 1383, 02:44 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •