powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Функция JS работает на одной странице проекта C# asp net core, но выдает ошибку 400 (Bad R
2 сообщений из 2, страница 1 из 1
Функция JS работает на одной странице проекта C# asp net core, но выдает ошибку 400 (Bad R
    #40080642
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Есть 2 .cshtml страницы. Одна для добавления объекта - Create.cshtml:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
@model voteCollector.Models.Friend

@{
    ViewData["Title"] = "Create";
}
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf
@functions {
    public string GetAntiXsrfRequestToken()
    {
        return Xsrf.GetAndStoreTokens(Context).RequestToken;
    }
}

<hr />
<div class="row">
    <input type="hidden" id="RequestVerificationToken"
           name="RequestVerificationToken" value="@GetAntiXsrfRequestToken()">
    <div class="col-md-4">
        <form asp-action="Create">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
           <div class="form-row">
                <div class="form-group col-md-6">
                    <label asp-for="CityId" class="control-label"></label>
                    <select id="CityId" asp-for="CityId" class="form-control" asp-items="ViewBag.CityId"></select>
                </div>
                <div class="form-group col-md-6">
                    <label asp-for="StreetId" class="control-label"></label>
                    <select id="StreetId" asp-for="StreetId" class="form-control" asp-items="ViewBag.StreetId"></select>
                </div>
                <div id="divHouse" class="form-group col-md-6">
                    <label asp-for="HouseId" class="control-label"></label>
                    <select id="HouseId" asp-for="HouseId" class="form-control" asp-items="ViewBag.HouseId" style="width:100%"></select>
                </div>
<div class="form-row">
                <div class="form-group col-md-6">
                    <input type="submit" value="Добавить" class="btn btn-primary btn-block" />
                </div>
                <div class="form-group col-md-6">
                    <a asp-action="Index" class="btn btn-secondary btn-block"><i class="fa fa-table"></i>Вернуться к списку</a>
                </div>
            </div>
        </form>
    </div>
</div>

<environment include="Development">
    <script src="~/lib/jquery/dist/jquery.min.js"></script>
</environment>

@section Scripts {

    <script type="text/javascript" src="~/js/JS_Create_Friend.js"></script>


    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}

    @{
        if (TempData["msg"] != null)
        {
            <script>
            alert('@TempData["msg"]')
            </script>
        }
    }
}



Другая для изменения объекта - Edit.cshtml:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
@model voteCollector.Models.Friend

@{
    ViewData["Title"] = "Edit";
}
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf
@functions {
    public string GetAntiXsrfRequestToken()
    {
        return Xsrf.GetAndStoreTokens(Context).RequestToken;
    }
}

<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="Edit">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <input type="hidden" asp-for="IdFriend" />
            <div class="form-row">
                <div class="form-group col-md-6">
                    <label asp-for="CityId" class="control-label"></label>
                    <select id="CityId" asp-for="CityId" class="form-control" asp-items="ViewBag.CityId"></select>
                    <span asp-validation-for="CityId" class="text-danger"></span>
                </div>
                <div class="form-group col-md-6">
                    <label asp-for="StreetId" class="control-label"></label>
                    <select id="StreetId" asp-for="StreetId" class="form-control" asp-items="ViewBag.StreetId"></select>
                    <span asp-validation-for="StreetId" class="text-danger"></span>
                </div>
                
                <div class="form-group col-md-6">
                    <label asp-for="HouseId" class="control-label"></label>
                    <select id="HouseId" asp-for="HouseId" class="form-control" asp-items="ViewBag.HouseId"></select>
                    <span asp-validation-for="HouseId" class="text-danger"></span>
                </div>                                       
            </div>                             

            <div class="form-row">
                <div class="form-group col-md-6">
                    <input type="submit" value="Сохранить" class="btn btn-primary btn-block" />
                </div>
                <div class="form-group col-md-6">
                    <a asp-action="Index" class="btn btn-secondary btn-block"><i class="fa fa-table"></i>Вернуться к списку</a>
                </div>
            </div>
        </form>
    </div>
</div>

@section Scripts {

    <script type="text/javascript" src="~/js/JS_Create_Friend.js"></script>
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}



В них подключаю один и тот же файл со скриптом:
Код: javascript
1.
<script type="text/javascript" src="~/js/JS_Create_Friend.js"></script>



Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
//Автоматич установка даты голосования
function setDate(sourseidObj, idObject) {
    chbox = document.getElementById(sourseidObj);
    if (chbox.checked) {
        var today = new Date();
        var dd = String(today.getDate()).padStart(2, '0');
        var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
        var yyyy = today.getFullYear();
        today = yyyy + '-' + mm + '-' + dd;
        document.getElementById(idObject).value = today;
    }
    else {
        document.getElementById(idObject).value = null;
    }
}

// Обновление списка улиц после выбора города

$(function () {
    $("#CityId").change(function () {
        var formData = { 'CityId': Number.parseInt($('#CityId').val()), 'Name': $('#CityId>option:selected').text() };
        $.ajax({
            url: "http://localhost:18246/api/API/searchStreets",
            headers:
            {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
                'RequestVerificationToken': $('#RequestVerificationToken').val()
            },
            type: 'POST',
            dataType: "json",
            data: JSON.stringify(formData),
            success: function (data) {

                dataFilling(data, 'idStreet', 'name', '#StreetId', '<option/>');
            },
            error: function (result, status, er) {
                alert("error: " + result + " status: " + status + " er:" + er);
            }
        });
    });
});



Функция setDate() нормально отрабатывает на обеих страницах, а вторая функция, ajax-функция нормально отрабатывает на страницы добавления (Create.cshtml), а на страницы правки (Edit.cshtml) выдает ошибку:
авторjquery.min.js:2 POST http://localhost:18246/api/API/searchStreets 400 (Bad Request)
Контроллер:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
[Route("api/[controller]")]
    [ApiController]
    [Produces("application/json")]
    public class APIController : ControllerBase
    {
        private readonly VoterCollectorContext _context;

        public APIController(VoterCollectorContext context)
        {
            _context = context;
        }


        [HttpPost("searchStreets")]
        [ValidateAntiForgeryToken]
        public IActionResult SearchStreets(CityDTO citySelected)
        {
            List<Street> streets =  _context.Street.Where(s => s.CityId == citySelected.CityId).ToList<Street>();
            
            if (streets.Any())
            {
                List<StreetDTO> streetsDTO = streets.Select(s => new StreetDTO { IdStreet = s.IdStreet, Name = s.Name }).ToList();
                return Ok(streetsDTO);                
            }
            return NoContent();
        }

        [HttpPost("searchHouse")]
        [ValidateAntiForgeryToken]
        public IActionResult SearchHouse(StreetDTO streetSelected)
        {
            List<House> houses = _context.House.Where(h => h.StreetId == streetSelected.IdStreet).ToList<House>();

            if (houses.Any())
            {
                List<HouseDTO> housesDTO = houses.Select(h => new HouseDTO { IdHouse = h.IdHouse, Name = h.Name }).ToList();
                return Ok(housesDTO);
            }
            return NoContent();
        }
    }



Почему на 2-ой страницы функция выдает ошибку запроса? Как можно исправить?
...
Рейтинг: 0 / 0
Функция JS работает на одной странице проекта C# asp net core, но выдает ошибку 400 (Bad R
    #40080715
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не 2-ой стр не было указано поле для токена:
Код: html
1.
2.
<input type="hidden" id="RequestVerificationToken"
           name="RequestVerificationToken" value="@GetAntiXsrfRequestToken()">
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Функция JS работает на одной странице проекта C# asp net core, но выдает ошибку 400 (Bad R
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]