2012-02-23 12 views
0

をトリガしません、私のコントローラの署名である:ここでアクションはここ

public class CartController : Controller 
{ 

    public ActionResult Index() 
    { 

     CartViewModel cartViewModel = _cartRepository.GetCart(SessionVariables.CartId); 
     return View(cartViewModel); 
    } 

    public ActionResult List() 
    { 
     return View(); 
    } 

    [Authorize] 
    public ActionResult AddToCart(int productId, int quantity = 1) 
    { 

     return RedirectToAction("Index"); 
    } 

    [HttpPost] 
    [ActionName("AddToCart")] 
    public ActionResult AddToCartFromDetails(int productId = 0, int quantity = 1) 
    { 
     return RedirectToAction("AddToCart", new {productId , quantity}); 
    } 

} 

は、Global.asaxの上の私のルートである:ここでは

routes.MapRouteLowerCase(
     "AddToCart", // Route name 
     "products/addtocart/{productId}", // URL with parameters 
     new { controller = "Cart", action = "AddToCart", productId = UrlParameter.Optional } // Parameter defaults 
    ); 

は[HttpPost]アクションに行かない私のフォームです私CartController上:

@using (Html.BeginForm("AddToCart", "Cart", null, FormMethod.Post, null)) 
{ 
<div class="quantity-container"> 
    <div> 
     Quantity :</div> 
    <input type="text" name="quantity" value="1" /> 
    <input type="hidden" name="productId" value="@Model.ItemDetails.ItemMasterId" /> 
</div> 
<div class="buy-btn-container"> 
    <input type="image" src="@Url.Content("~/Content/Images/buynow_btn.png")" alt="Buy"/> 
</div> 
<div class="clear"> 
</div> 
} 

フォームは、上記の設定私のルートに解決されないためのURL:

/products/addtocart

答えて

0

あなたのアクション名は、「カートに入れる」のマッチングURLをルーティングする必要があるときMVCは区別をすることはできませんので、同じパラメータ(2つのint、およびブートへのオプションの両方)で2回使用されています。

+0

はいますが、フォームがそのアクションを使用するように、私は[HttpPost]属性を持つ他の1をタグ付け:従って私は代わりにBeginRouteFormに切り替えます。 –

0

デフォルトルートの上のルートをglobal.asaxに設定します。これは、デフォルトルートと特定のルートの両方に一致します。 MVCは最初に見つかったものを使用しています。

あなたのルートはGETのために働くので、MVCはBeginFormで何か変わったようですか?

http://msdn.microsoft.com/en-us/library/dd505047.aspx

+0

はい、それはデフォルトのルートよりも上であり、実際にはルートルールに書いた方法を解決します。 GETアクションは途中で動作します –

+0

なぜBeginFormのオーバーロードを使用していますか? – jgauffin

+0

すぐに@classとidのようなhtml属性をいくつか配置します。 –

関連する問題