kendo UI при асинхронном обновлении на странице Razor возвращает ошибку 404

Я пытаюсь использовать асинхронную загрузку Kendo UI на странице Razor (без контроллера), но получаю ошибку 404

Страница Index.cshtml-

<div class="row">
    <div class="">
        <form asp-action="" class="" id=""  enctype="multipart/form-data">
            <div class="form-group">
                <label class="">Review Type</label>
                <div class="">               
                    <select asp-for="ReviewType" asp-items="@(new SelectList(Model.ReviewTypes, "ReviewTypeLookupId", "ReviewTypeName"))" class="form-control"></select>
                </div>
            </div>
            <div class="form-group">
                <label class=""></label>
                <div class="">
                    @(Html.Kendo().Upload()
                          .Name("files")
                          .Async(a => a
                            .Save("Index?handler=Save", "UploadManagement")
                              .Remove("Remove", "UploadManagement/Index")
                              .AutoUpload(true)
                          )
                          )
                </div>
            </div>
            <div class="form-group">
                <button type="submit" id="submit-all" class="btn btn-default">Upload </button>
            </div>
        </form>
    </div>  

Страница Index.cshtml.cs

 [HttpPost]
        public ActionResult OnPostSave(IEnumerable<IFormFile> files)
        {
            // The Name of the Upload component is "files"
            if (files != null)
            {
                foreach (var file in files)
                {
                    //var fileContent = ContentDispositionHeaderValue.Parse(file.ContentDisposition);

                    //// Some browsers send file names with full path.
                    //// We are only interested in the file name.
                    //var fileName = Path.GetFileName(fileContent.FileName.Trim('"'));
                    //var physicalPath = Path.Combine(HostingEnvironment.WebRootPath, "App_Data", fileName);

                    //// The files are not actually saved in this demo
                    ////file.SaveAs(physicalPath);
                }
            }

            // Return an empty string to signify success
            return Content("");
        }

Ошибка - не удалось загрузить ресурс: сервер ответил статусом 404 (не найден)


person Prince    schedule 07.05.2018    source источник
comment
Для страниц razor вам нужно указать путь к Index? Handler = Сохранить и изменить имя действия на OnPostSave?   -  person Mark G    schedule 07.05.2018
comment
Сделал это. Но я все равно получаю 404. Пожалуйста, посмотрите обновленный код.   -  person Prince    schedule 07.05.2018
comment
Что отображается в URL-адресе при отображении страницы?   -  person Mark G    schedule 07.05.2018
comment
localhost: 44328 / UploadManagement / Index? handler = Сохранить   -  person Prince    schedule 07.05.2018
comment
Если этот путь действителен, проблема должна быть связана с привязкой модели. Я не такой знакомый с бритвенными страницами, но разве вам не нужен атрибут BindProperty? Это также обсуждалось на stackoverflow.com/questions/50122555/.   -  person Mark G    schedule 07.05.2018
comment
Не помогает. Все еще не работает   -  person Prince    schedule 07.05.2018
comment
Вы когда-нибудь заставляли это работать?   -  person blub    schedule 29.06.2018


Ответы (1)


Самый простой способ решить эту проблему - не использовать .Save(string action, string controller) или любую его перегрузку, а .SaveUrl(string url):

@(Html.Kendo().Upload()
    .Name("files")
    .Async(a => a
        .SaveUrl("./Index?handler=Save")
        .AutoUpload(true)
))

Это также будет работать, если вы находитесь в области, отличной от заданной по умолчанию, а URL-адрес самой страницы фактически /area-url/Index?handler=foo

person Marco    schedule 27.05.2019