RedirectToAction формируется не верно

119
15 октября 2019, 22:30

Проект asp.net core 2.0, в нём есть вот такой метод

public ActionResult InventNumberSearch (string inventNumber) {
    var asset = _context.Assets.FirstOrDefault (s => s.InventNumber == inventNumber);
    if (asset != null) {
        // return RedirectToAction ("Details", "Assets", new { id = asset.Id });
        return RedirectToAction ("Details", "Assets", new { @id = asset.Id });
        // return RedirectToAction (actionName: "Details", routeValues : new { id = asset.Id });
    } else {
        return RedirectToAction ("Index", "Offices");
    }    
}

который ищет товар и возвращает страницу Details, этого товара. Но ссылка формируется не правильно. Из за чего, товар находиться правильный, но картинка слетает.

Ссылка которая приходит получается такая:

http://localhost:60834/Assets/Details/8b176366-a057-4b9a-8386-dbe3926948a9

а, должна получиться такая:

http://localhost:60834/Assets/Details?id=8b176366-a057-4b9a-8386-dbe3926948a9

Не могу никак решить головоломку. Перепробовал несколько вариантов которые за комментированы. Но не один не сработал. В чём может быть проблема.

Данные в метод передаю так:

 @using (Html.BeginForm("InventNumberSearch", "Assets", FormMethod.Post, new{
                                @role="search", @class="navbar-form-custom"}))
                                {
                                <div>
                                    <p>
                                        @Html.TextBox("InventNumber",null, new { @class="form-control",
                                        @placeholder="Поиск по инвентарному номеру...",
                                        @style="width: 250px;"})
                                        @Html.TextBox("InventNumberSearch","Поиск", new { @class="hidden",
                                        @type="submit"})
                                    </p>
                                </div>
                                }

Route:

routes.MapRoute (
                    name: "default2",
                    template: "{controller=Offices}/{action=Index}/{id?}");
Answer 1

Уберите /{id?} из роута

routes.MapRoute (
                    name: "default2",
                    template: "{controller=Offices}/{action=Index}");

И будьте готовы, что поломается где-то ещё: ведь теперь по всему сайту ссылки будут через ?id= отображаться и может быть у вас есть места, где нужно как раз /id=

Пример: страницы типа /Order/Details/123 станут /Order/Details?id=123

READ ALSO
Как в БД записать сложный объект C#?

Как в БД записать сложный объект C#?

Значит у меня есть база данных следующей схемы :

124
Как подключить к одной базе данных localDB два проекта в одном решении?

Как подключить к одной базе данных localDB два проекта в одном решении?

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

124
Проблема с классами (возможно с классами)

Проблема с классами (возможно с классами)

В общем такое делоНа днях надумал соорудить игру, эдакую экономическую стратегию

95
Не получается рисовать на созданном в классе PictureBox`e

Не получается рисовать на созданном в классе PictureBox`e

Создаю PictureBox в классе, он отображается, но при попытке что-либо отрисовать на нём я получаю целое ничегоНи ошибки, ни линии

77