Передача экземпляра класса в качестве аргумента действию / методу Url.Action - PullRequest
0 голосов
/ 25 сентября 2019

Моя цель - добиться следующего:

  1. На странице ASP.NET пользователь выбирает сервер из списка Server объектов.
  2. Пользовательнажимает кнопку для экспорта информации об этом сервере.
  3. При нажатии кнопки запускается метод C # ExportServerInfo() с переданным ему текущим Server объектом (Model.Servers[i]).

Контроллер имеет метод:

public void ExportServerInfo(Server id)
{
    // Do something with the Server
    System.Diagnostics.Debug.WriteLine(id.Name);
    System.Diagnostics.Debug.WriteLine(id.RamCapacity);
}

Представление представляет собой файл CSHTML с использованием Razor.Вот код для кнопки:

<div class="col-md-12" align="right">
    <a href="@Url.Action("ExportServerInfo", "ServerList", new { id = Model.Servers[i] })" class="btn btn-primary">
        <span class="glyphicon glyphicon-download-alt" aria-hidden="true"></span>
         @MainResource.SomeLocalizationString
    </a>
</div>

Сгенерированный HTML-код: <a href="/ServerList/ExportServerInfo/ProjectName.ViewModels.Server" class=...>

При нажатии кнопки метод ExportServerInfo() в классе ServerListController должен вызываться с выбраннымServer как единственный аргумент.Вместо этого пользователь переводится на localhost:56789/ServerList/ExportServerInfo/ProjectName.ViewModels.Server с ошибкой HTTP 404 с веб-сервера, потому что он не может его найти;эта строка сама по себе не указывает, какой это сервер.Метод не вызывается вообще.Аналогичное решение, которое я попытался, привело пользователя на пустую страницу с указанным выше в качестве строки запроса в URL.

Когда пользователь нажимает кнопку, должен вызываться метод, но вместо этого пользователь перемещаетсяна страницу (которая 404) и метод не вызывается.


Метод выполняется, если действие не имеет аргумента / параметра:

<div class="col-md-12" align="right">
    <a href="@Url.Action("ExportServerInfo", "ServerList")" class="btn btn-primary">
        <span class="glyphicon glyphicon-download-alt" aria-hidden="true"></span>
         @MainResource.SomeLocalizationString
    </a>
</div>

Генерируемый HTML: <a href="/ServerList/ExportServerInfo" class=...>

Пользователь нажимает кнопку («посещение» /ServerList/ExportServerInfo), но остается на странице, и метод запускается (без параметров).Но у метода должен быть параметр для передачи Server обратно в контроллер.


Кроме того, по какой-то причине внешний вид кнопки при работе работает хорошо, но цвета подсветкинемного ошибочно в реализации.

tl; dr: Аргумент не передается методу, метод никогда не запускается, пользователь перенаправляется на страницу 404.Методу нужно передать Server.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...