将输入值传递给 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");
}
}
好的,所以我试图从 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");
}
}