我想使用Html.BeginForm传递rentPeriod参数。 目前,我只将文本放在Details.cshtml中。 如果我想将3,7,14等租借时间作为号码传递,我该怎么办? 我必须使用hiddenfield或函数吗? 我不知道如何将参数传递给我的其他方法,即AddToCart方法。 请告诉我如何传递号码的值。 感谢。
Details.cshtml。
<td>
Rental Period: <br />
@using (Html.BeginForm("AddToCart", "ShoppingCart", new { id = Model.productId }, FormMethod.Post))
{
<div class="display-label">
@Html.RadioButtonFor(model => model.price, Model.threeDayPrice)
//I put just text in here '3 day' How can I write this number, '3'?
//do I have to use hiddenfield? or other functions?
3 day: £@Model.threeDayPrice
</div>
<div class="display-label">
@Html.RadioButtonFor(model => model.price, Model.aWeekPrice)
1 week: £@Model.aWeekPrice
</div>
<div class="display-label">
@Html.RadioButtonFor(model => model.price, @Model.twoWeekPrice)
2 week: £@Model.twoWeekPrice
</div>
<div class="display-label">
@Html.RadioButtonFor(model => model.price, @Model.aMonthPrice)
1 month: £@Model.aMonthPrice
</div>
<div class="display-label">
@Html.RadioButtonFor(model => model.price, @Model.threeMonthPrice)
3 month: £@Model.threeMonthPrice
</div>
<div class="display-label">
@Html.RadioButtonFor(model => model.price, @Model.sixMonthPrice)
6 month: £@Model.sixMonthPrice
</div>
<br />
<input type="submit" class="button" value="Add to cart" style="margin-left:0px; width:90px;"/>
}
</td>
AddToCart方法中的ShoppingCart控制器。
//How to pass the parameter here.
[HttpPost]
public ActionResult AddToCart(int id, FormCollection col)
{
var addedProduct = db.Product
.Single(product => product.productId == id);
decimal priceValue = Convert.ToDecimal(col["price"]);
// Retrieve the product from the database
// Add it to the shopping cart
var cart = ShoppingCart.GetCart(this.HttpContext);
cart.AddToCart(addedProduct);
// Go back to the main store page for more shopping
return RedirectToAction("Index", new { @priceValue = priceValue });
}
答案 0 :(得分:0)
我强烈建议您使用View Models而不是依赖FormsCollection。但是,是的..在您的情况下,您可以使用隐藏字段来存储项目,然后将其从FormsCollection中拉出来。
答案 1 :(得分:0)
下面是一个示例,说明我如何获取与复选框关联的提供程序属性的值,以便在选中复选框时,我可以通过查询formsCollection [“selectedProviderLanID”将其从Controller中的窗体集中取出“。你可以用你的单选按钮做类似的事情。
@foreach (var item in @Model.providerList)
{
<tr>
<td><input type="checkbox" name="selectedProviderLanID" value="@item.LANID" />
</td>
<td>
@item.DisplayName
</td>
<td>
@item.Pager
</td>
</tr>
}