【问题标题】:passing a select/option value from a view that contains a list model to a controller将包含列表模型的视图中的选择/选项值传递给控制器
【发布时间】:2021-05-23 23:17:35
【问题描述】:

我有一个模型列表,我可以在 foreach 中调用以显示在选择/选项中,但是当我尝试将特定值发送回我的控制器以让它在终端中打印时,我得到以下信息:

LeagueProject.Models.ViewModel+Participant

我知道我传回的值是有效的,因为它在我的选项中显示在“id number:”之后。

//my cshtml:
@model List<ViewModel.Participant>;
<form asp-action="PostNewBasketballPlayer2" asp-controller="Dashboard" method="POST">
<div class="form-group">
    <select name="ParticipantId">
    @{
            if(Model != null)
            {
                foreach(ViewModel.Participant i in Model)
                {
                    <option value="@i.ParticipantId">
                        @i.ParticipantFirstName @i.ParticipantLastName id number: @i.ParticipantId
                    </option>
                }                    
            }
    }
    </select>
</div>
<button class="btn btn-outline-info mt-5" type="submit">Sign up</button>
//my controller:
[HttpPost]
[Route("/Dashboard/postNewBasketballPlayer")]
public IActionResult PostNewBasketballPlayer2(ViewModel.Participant newParticipant)
    {
        Console.WriteLine(newParticipant);
        return RedirectToAction("Dashboard","Dashboard");
    }

我尝试了什么:

我更改了值以查看是否可以得到不同的结果,但我从终端得到了相同的响应

示例:

<option value="12">

我还尝试将传递给控制器​​的内容更改为 int 和字符串

public IActionResult PostNewBasketballPlayer2(int newParticipant)

当我将它更改为 int 时,我在终端中为我选择的任何选项返回 0,即使没有一个 id 是零。

public IActionResult PostNewBasketballPlayer2(string newParticipant)

当我将其更改为字符串时,我什么也得不到。

我还尝试制作一个完全独立的 Participant 模型,因为 ViewModel.Participant 是一个包含 Participant 的包装模型。

public IActionResult PostNewBasketballPlayer2(Participant newParticipant)

终端打印的内容:

LeagueProject.Models.Participant

不过,为了代码的一致性,我想继续使用包装器模型。这只是我进行的一个测试,看看我是否能得到任何不同的结果。

【问题讨论】:

  • 你能发布参与者课程吗?

标签: c# asp.net asp.net-mvc asp.net-core asp.net-core-mvc


【解决方案1】:

根据提供的信息,我在bitbucket 上创建了一个存储库。 ParticipantId 可以正确传递:

【讨论】:

  • 您将 ParticipantId 传递回控制器的方式与我相同。您是否在终端中写入了 Id?从视图传回的值是模型的特定部分(ParticipantId);而分配给控制器中 newParticipant 的模型是一个完整的模型。我尝试通过在视图中将值设置为 @i 来传回整个模型。在控制器中对 newParticipant.ParticipantId 执行 writeLine。但这给了我一个错误。假设我不能在选择/选项中传回整个模型。
  • 我想通了。我只需要将选择名称重命名为我作为字符串传递给控制器​​的名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 2015-05-29
相关资源
最近更新 更多