MVC3 передает параметр, используя beginForm - PullRequest
0 голосов
/ 02 апреля 2012

Я хочу передать параметр, который является rentalPeriod, используя Html.BeginForm.В настоящее время я помещаю только текст в Details.cshtml.Что я должен сделать, если я хочу передать в качестве числа аренды период, например 3, 7, 14?Должен ли я использовать скрытое поле или функцию?Я не знаю, как передать параметр в мой другой метод, который является методом 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>

Контроллер ShoppingCart в методе AddToCart.

//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 });
    }

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

Вот пример того, как я получил мое значение для атрибута провайдера, чтобы он был связан с флажком, так что, когда флажок установлен, я могу получить его из коллекции форм в Контроллере, запросив formCollection ["selectedProviderLanID «]. Вы можете сделать что-то подобное с вашими переключателями.

@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>
}
0 голосов
/ 02 апреля 2012

Я настоятельно рекомендую вам использовать Просмотр моделей , а не полагаться на FormsCollection. Однако да ... в вашем случае вы можете просто использовать скрытое поле для хранения элемента, а затем вытащить его из коллекции FormsCollection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...