Создать пользовательскую ссылку Dynamic c в форме, которая направляет на другую страницу - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь создать список предметов, и когда пользователь нажимает на ссылку, он передает серийный номер танка в следующую форму.

Вот что у меня есть, но как мне сделать это можно связать и передать серийный номер танка на следующую страницу:

Мой TankList в моем контроллере:

    public ActionResult TankList()
    {

      var tanklist = new List<string>();
      tanklist.Add("1234566777");
      tanklist.Add("62523456345");
      tanklist.Add("8924545454");
      tanklist.Add("34556855433");
      tanklist.Add("933456643437");

      ViewBag.TankList = tanklist;

      return View();
    }

Мой TankList.cs html:

@{
    ViewBag.Title = "Tanks Serial Numbers";
}
<h2>@ViewBag.Title.</h2>
<h3>@ViewBag.Message</h3>

<p>Please select the tank that you wish to administer:</p>

<div>


  @foreach (var list in ViewBag.Tanklist)
  {
    <a href="/Forms/AsmeBasic/@list">@list</a>
    <br />
  }

</div>

Я хотел уточнить, что вышеприведенное, кажется, работает, по крайней мере, он создает ссылку правильно:

enter image description here

Мой AsmeBasi c ActionResult в моем контроллере:

    public ActionResult AsmeBasic(string tankserial)
    {
      ViewBag.TankSerial = tankserial;

      return View();
}

Список заполняется, но серийный номер не передается. Я получаю нулевое значение для tankserial.

Ответы [ 2 ]

3 голосов
/ 02 апреля 2020

Хорошо, вам нужно добавить пару вещей в ваш HTML.

  @foreach (var list in ViewBag.Tanklist)
  {
    <a href="/Forms/AsmeBasic?tankserial=@list">@list</a>
    <br />
  }

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

  @foreach (var list in ViewBag.Tanklist)
  {

    <a asp-action="AsmeBasic" asp-route-tankserial="@list">@list</a>

    <br />
  }
0 голосов
/ 02 апреля 2020

Похоже, у вас проблема с форматом.

Вы можете использовать вспомогательный метод Html.ActionLink для создания гиперссылки, которая позаботится о добавлении параметра строки запроса в правильном формате:

@foreach (var list in ViewBag.Tanklist)
  {
    @Html.ActionLink(list, // <-- Link text  
             "AsmeBasic", // <-- Action Method Name  
             "Forms", // <-- Controller Name  
             new { tankserial = list }, // <-- Route value  
             null // <-- htmlArguments  
             )
    <br />
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...