【问题标题】:Call Controller Action from script in View从视图中的脚本调用控制器操作
【发布时间】:2016-09-09 12:39:03
【问题描述】:

我正在尝试从我的脚本中调用控制器操作,但没有调用该方法。

这是我的控制器操作:

 [HttpPost]    
 public ActionResult EditQuantity(int? id, int quantity)
 {
     if (id == null)
     {
          return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
     }
     Cart cart = db.Carts.Find(id);
     if (cart == null)
     {
         return HttpNotFound();
     }
     cart.Quantity = quantity;
     db.SaveChanges();
     string url = this.Request.UrlReferrer.AbsolutePath;
     return Redirect(url);
 } 

这是我的脚本:

<script>
    function refreshTotal(ProductId) {
        var qty = document.getElementById("product-quantity-" + ProductId).value;
        var UnitPrice = document.getElementById("unit-price-" + ProductId).innerText;
        var total = qty * UnitPrice;
        document.getElementById("product-total-" + ProductId).innerHTML = "$" + total.toFixed(2);

        $.post('@Url.Action("EditQuantity", "Home")', { "id": ProductId, "quantity": qty }, function (data) {           

        });
    }
</script>

从 HTML 调用脚本如下:

<td class=""><img src="" class="img-responsive" onclick="refreshTotal(@product.Id)"></td>

解决方案是在脚本中进行,从脚本调用没有被执行到操作。

【问题讨论】:

    标签: javascript ajax asp.net-mvc controller


    【解决方案1】:

    在您提供的代码中,一切似乎都很好。您是否在浏览器控制台中查找过任何 javascript 错误并且您的操作在正确的控制器中?

    【讨论】:

    • 这不是答案。这是一条评论。
    • 对不起,我在 cmets 中没有那么多声望 (50) 可以回复。
    • 其实你不用回答,因为他在你发帖之前解决了他自己的问题。
    【解决方案2】:

    我在“productId”中有错字 - 应该是“ProductId”。它现在正在工作:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多