如何在dotnet核心控制器中获取表单输入的值

时间:2018-05-14 17:58:48

标签: c# .net .net-core

我查看了我有产品详细信息表单

@model IEnumerable<Shop.Models.Product>

<form method="post" asp-controller="Product" asp-action="AddToCart">
    <div class="col-md-4 col-sm-4">
        <div class="card">
            <img class="card-img-top" src="@item.Image" alt="Card image">
            <div class="card-body">
                <span class="card-title">@item.Name<b>: </b> </span>
                <b class="card-text">$@item.Price</b>
                <p class="card-text">@item.Description</p>
                <input type="number" min="1" max="10" class="form-control" value="1" placeholder="Please enter quantity" />
                <button asp-controller="Product" asp-action="AddToCart"
                   asp-route-ProductId="@item.ID"
                   asp-route-ProductName="@item.Name"
                   asp-route-ItemCount="1"
                   class="btn btn-primary btn-block">Add to Cart</button>                        
            </div>
        </div>
    </div>
</form>

添加到购物车按钮按预期使用默认值。但现在我希望asp-route-ItemCount="1"从文本框中获取价值但我无法弄清楚如何做到这一点。我正在学习dotnet这就是为什么我不想使用jquery ajax。

我的产品型号:

public class Product
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Image { get; set; }
    public decimal Price { get; set; }
    public string Description { get; set; }
}

一点帮助将不胜感激。提前致谢。

1 个答案:

答案 0 :(得分:0)

我在Microsoft文档中找到了您的问题的解决方案。在表实体Product中,您必须添加属性。

 public int Count {get; set;}

然后您可以更改文本框:

<input asp-for="Product.Count" ..../>

最后更改按钮:

 asp-route-ItemCount="@item.Count"

我认为这是一个解决方案,但为了更好地理解,您可以阅读本教程: Microsoft documentation