@lena_shevtsova

Отправка данных из формы?

В проекте mvc я хочу реализовать поиск, при этом результаты должны выводиться в блоке ниже, а не на другой странице.
форма поиска находится в частичном представлении, список найденных элементов тоже.

форма поиска:
<div>
    @using (Ajax.BeginForm("_RealtyItemsList", new AjaxOptions { UpdateTargetId = "results" }))
    {

        <select class="form-select" id="realty-type" aria-label="Default select example" name="RealtyType" style="width:100px">
            <option value=@realtyStore.Models.Types.APARTMENT>@realtyStore.Models.Types.APARTMENT</option>
            <option value=@realtyStore.Models.Types.ROOM>@realtyStore.Models.Types.ROOM</option>
            <option value=@realtyStore.Models.Types.HOUSE>@realtyStore.Models.Types.HOUSE</option>
            <option value=@realtyStore.Models.Types.BED>@realtyStore.Models.Types.BED</option>
            <option value=@realtyStore.Models.Types.GARAGE>@realtyStore.Models.Types.GARAGE</option>
            <option value=@realtyStore.Models.Types.WAREHOUSE>@realtyStore.Models.Types.WAREHOUSE</option>
            <option value=@realtyStore.Models.Types.BUILDING>@realtyStore.Models.Types.BUILDING</option>
            <option value=@realtyStore.Models.Types.TRADING_AREA>@realtyStore.Models.Types.TRADING_AREA</option>
            <option value=@realtyStore.Models.Types.PRODUCTION>@realtyStore.Models.Types.PRODUCTION</option>
            <option value=@realtyStore.Models.Types.OFFICE>@realtyStore.Models.Types.OFFICE</option>
        </select>
        <div class="input-group">
            <p>Цена</p>
            <input placeholder="от" name="minPrice" type="number" />
            <input placeholder="до" name="maxPrice" type="number" />

        </div>
        <div class="input-group" id="square" style="display:none">
            <p>Площадь</p>
            <input placeholder="от" name="minSquare" type="number" />
            <input placeholder="до" name="maxSquare" type="number" />

        </div>
        <div class="checkBox-group" id="numRooms">
            Количество комнат
            <div class="form-check form-check-inline">
                <input class="form-check-input" type="checkbox" value="1" id="flexCheckDefault" name="NumberRoom[]">
                <label class="form-check-label" for="flexCheckDefault">
                    1
                </label>

                <input class="form-check-input" type="checkbox" value="2" id="flexCheckChecked" name="NumberRoom[]" checked>
                <label class="form-check-label" for="flexCheckChecked">
                    2
                </label>
            </div>
        </div>
        <select class="form-select" aria-label="default select example" name="City" style="width:100px">
            @foreach (var c in ViewBag.Cities)
            {
                <option value=@c.Name>@c.Name</option>
            }
        </select>
        <input id="search" type="submit" value="Поиск" />
    }

    <div id="results"></div>
</div>

<script src="@Url.Content("~/Scripts/formRent.js")" type="text/javascript"></script>


_RealtyItemList.chtml - частичное представление, где должны выводиться результаты поиска. файл лежит в Views/Home, рядом с формой поиска
@model IEnumerable<realtyStore.Models.Realty>

@foreach (var r in ViewBag.Realties)
{
    <div class="realtyItem">
        <div class="realtyItem__img">
            <a href="Flat/@r.Id"><img src=@r.ImgUrl alt="photo" /></a>
        </div>

        <div>
            <a href="Flat/@r.Id"><p class="realtyItem__title">@r.Status @r.Type</p></a>
            <p class="realtyItem__desc_mini">
                @if (r.NumberRoom != null)
                {<span>@r.NumberRoom -комн. </span>}
                @r.Type, r.Squre кв.м.,
                @if (@r.Floor != null)
                {<span> @r.Floor /</span>} @r.Floors эт.
            </p>

            <p class="realtyItem__price"> @r.Price руб.</p>
        </div>
    </div>
}


homeController:
пока пытаюсь хотя бы зайти в метод и получить данные
[HttpPost]
        protected ActionResult _RealtyItemsList(Realty realty)
        {
            return PartialView(realty);

        }


при попытке отправить форму, переход по адресу https://localhost:44351/Home/_RealtyItemsList
и ошибка
Не удалось найти данный ресурс.
Описание: HTTP 404. Возможно, искомый ресурс (или одна из его зависимостей) удален, получил другое имя или временно недоступен. Просмотрите следующий URL-адрес и проверьте, что он введен правильно.

Запрошенный URL: /Home/_RealtyItemsList


сразу хочу задать еще один вопрос
вот так заполняю таблицу
db.Owners.Add(new Owner { Id = 0, LastName = "Яковлева", FirstName = "Айлин", Patronymic = "Дмитриевна", Phone = "895102345612", Passport = "1420 777799", CityId = 2, Address = "" });
            db.Owners.Add(new Owner { Id = 1, LastName = "Кошелев", FirstName = "Демид", Patronymic = "Матвеевич", Phone = "89997777777", Passport = "1418 774577", CityId = 0, Address = "" });
            db.Owners.Add(new Owner { Id = 2, LastName = "Игнатов", FirstName = "Андрей", Patronymic = "Давидович", Phone = "89301234567", Passport = "1415 713757", CityId = 1, Address = "" });


но данные получаются такими
db.Owners.ToList()[0].Id; // =1
 db.Owners.ToList()[1].Id; // =2
 db.Owners.ToList()[2].Id; // =3
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ответы на вопрос 1
@GLeBaTi
У вас метод как POST, а ajax запрос делаете через GET (по-умолчанию).
Попробуйте добавить new AjaxOptions { HttpMethod = "Post" }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы