Asp.net mvc 在MVC中使用ajax

Asp.net mvc 在MVC中使用ajax,asp.net-mvc,Asp.net Mvc,我看到我的产品的包ViewShoppingCart.ascx <%= Ajax.ActionLink("Посмотреть карзину", "ViewShoppingCart", "Products", new AjaxOptions { UpdateTargetId = "content" })%> 我想更改ViewShoppingCart.ascx中的数量 <%using (Ajax.BeginForm("UpdateItem", "Prod

我看到我的产品的包ViewShoppingCart.ascx

<%= Ajax.ActionLink("Посмотреть карзину",
     "ViewShoppingCart", "Products",
     new AjaxOptions { UpdateTargetId = "content" })%>

我想更改ViewShoppingCart.ascx中的数量

<%using (Ajax.BeginForm("UpdateItem", "Products", 
              new AjaxOptions { UpdateTargetId = "content" }))
  {%> 
      <%=Html.Hidden("productid", shoppingCartItem.Product.ProductID.ToString())%>
      <%=Html.TextBox("Quantity", shoppingCartItem.Quantity.ToString(), new { size = 2,
          maxlength = 2, onchange = "this.form.submit();" })%>
 <%} %>  

当我输入一个新的数值数量并按“回车”键时,一切正常。如果我按“Tab”而不是“Enter”,则会出现一个新窗口,而不是ajax表单


我做错了什么?

一种方法是在表单中添加一个提交按钮(它可能是隐藏的),并调用单击操作,以便触发异步表单回发:

<%using (Ajax.BeginForm("UpdateItem", "Products", 
         new AjaxOptions { UpdateTargetId = "content" })) {%> 
    <%=Html.Hidden("productid", shoppingCartItem.Product.ProductID.ToString())%>
    <%=Html.TextBox("Quantity", shoppingCartItem.Quantity.ToString(), new { size = 2,
        maxlength = 2, onchange = "document.getElementById('button').click();" })%>
    <input type="submit" id="button" style="display: none" />
<% } %>

如果你不喜欢隐藏按钮,这也行,但你可能会觉得很难看:

<%using (Ajax.BeginForm(
    "UpdateItem", 
    "Products", 
    new AjaxOptions { 
        UpdateTargetId = "content" 
    }, 
    new { 
        id = "myForm" 
    })) 
{ %> 
    <%=Html.Hidden("productid", shoppingCartItem.Product.ProductID.ToString())%>
    <%=Html.TextBox("Quantity", shoppingCartItem.Quantity.ToString(), 
        new { 
            size = 2,
            maxlength = 2, 
            onchange = "var event = new Object(); event.type='submit'; $get('myForm').onsubmit(new Sys.UI.DomEvent(event));" 
        }) 
    %>
<% } %>

离题:使用不引人注目的javascript和脚本简化您的生活