将输入值传递给 asp-route

passing input value to asp-route

好的,所以我试图从 asp-route-qt 中的输入 Quantite 传递值,但我似乎无法理解它。这个 asp-route-idBillet 工作得很好,但另一个不行。如果有人可以通过示例帮助我解决此问题,将不胜感激。提前致谢

编辑:我应该指定我用于视图的模型不能将 Quantite 作为属性。该模型包含四种类型的门票。每张票都包含一个标题、一个描述、一个价格和一个 Id。基本上这意味着我不能对输入 Quantite 使用 asp-for 标签。

这是我的观点:

<form method="POST">
    <div class="row">
    @foreach(var billet in Model)
    {
        <br>
        <div class="col-sm-6">
            <div class="card">
                <div class="card-body">
                    <h5 class="card-title" asp-for="Titre">@billet.Titre</h5>
                    <p class="card-text" asp-for="Descript">@billet.Descript</p>
                    <label for="Quantite">Quantité:</label>
                    <input type="number" name="Quantite" id="Quantite">

                    <a class="btn btn-secondary" asp-controller="Billet" asp-action="AjouterBillet" asp-route-idBillet="@billet.Id" asp-route-qt>Ajouter au panier</a>
                </div>
            </div>
        </div>
        <br>
    }
    </div>
    <br>

    <input type="submit" value="Aller au panier" class="btn btn-primary">
</form>

这是我的控制器操作

    private readonly ZooDbContext _zooDbContext;
    private readonly Panier _panier;

    public BilletController(ZooDbContext zooDbContext, Panier panier)
    {
        _zooDbContext = zooDbContext;
        _panier = panier;
    }

    public IActionResult AjouterBillet(int idBillet, int qt)
    {
        Billet billet = _zooDbContext.Billet.Find(idBillet);
        _panier.Ajouter(billet, qt);
        return RedirectToAction("Liste");
    }

这是我发现有效的方法。

视图如下:

<form method="post">
    <div class="row">
    @foreach(var billet in Model)
    {
        <br>
        <div class="col-sm-6">
            <div class="card">
                <div class="card-body">
                    <h5 class="card-title" asp-for="Titre">@billet.Titre</h5>
                    <p class="card-text" asp-for="Descript">@billet.Descript</p>
                    @using (Html.BeginForm("AjouterBillet", "Billet"))
                    {
                        <label for="Quantite">Quantité:</label>
                        <input type="number" name="Quantite" id="Quantite">

                        <input value="Ajouter au panier" type="submit" class="btn btn-secondary" asp-controller="Billet" asp-action="AjouterBillet"
                               asp-route-idBillet="@billet.Id">
                    }

                </div>
            </div>
        </div>
        <br>
    }
    </div>
    <br>

    <a class="btn btn-primary" asp-controller="Panier" asp-action="AfficherPanier">Aller au panier</a>
</form>

动作如下:

public class BilletController : Controller
{
    private readonly ZooDbContext _zooDbContext;
    private readonly Panier _panier;

    public BilletController(ZooDbContext zooDbContext, Panier panier)
    {
        _zooDbContext = zooDbContext;
        _panier = panier;
    }
    [HttpPost]
    public IActionResult AjouterBillet(int idBillet, int Quantite)
    {
        Billet billet = _zooDbContext.Billet.Find(idBillet);
        _panier.Ajouter(billet, Quantite);
        return RedirectToAction("Liste");
    }
}