2012-04-02 16 views
0

パラメータHtml.BeginFormを使用してrentPeriodを渡します。 現在、私はDetails.cshtmlにテキストを入れています。 3、7、14などのrentPeriodを数値として渡したい場合、何をする必要がありますか? 隠しフィールドや関数を使用する必要がありますか? AddToCartメソッドである他のメソッドにパラメータを渡す方法がわかりません。 番号の値を渡す方法を教えてください。おかげさまで MVC3はbeginFormを使用してパラメータを渡します

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

FormsCollectionではなく、View Modelsを使用することを強くお勧めします。しかし、はい、あなたの場合は、項目を格納するために隠しフィールドを使用するだけで、それをFormsCollectionから取り出すことができます。

0

プロバイダの属性がチェックボックスに関連付けられるようにする方法の例を示します。このチェックボックスをオンにすると、FormsCollectionを照会することでコントローラのフォームコレクションから取得できます[ 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> 
} 
関連する問題