2014-02-17 2 views
0

Единственное поле, которое обновляет пользователь: QuantityDelivered, тогда пользователь нажимает кнопку «Принять», чтобы обновить номер, введенный в текстовое поле, и ShoeOrderItem через Ajax.Используйте ajax для вызова ActionResult со значением из текстового поля.

@for (int i = 0; i < Model.ShoeOrderItemList.Count(); i++) 
{ 
<tr> 
    <td class="text-center"> 
     @Html.HiddenFor(model => Model.ShoeOrderItemList[i].ShoeOrderItemId) 
     @Html.DisplayFor(model => Model.ShoeOrderItemList[i].ShoeOrderItemId) 
    </td> 
    <td class="text-center"> 
     @Html.DisplayFor(model => Model.ShoeOrderItemList[i].LineItemTotal) 
    </td> 
    <td class="text-center"> 
     @Html.DisplayFor(model => Model.ShoeOrderItemList[i].ShoeSize.Size) 
    </td> 
    <td class="text-center"> 
     @Html.DisplayFor(model => Model.ShoeOrderItemList[i].Shoe.ManufacturingCost) 
    </td> 
    <td class="text-center"> 
     @Html.DisplayFor(model => Model.ShoeOrderItemList[i].Quantity) 
    </td> 
    <td class="text-center"> 
     @Html.DisplayFor(model => Model.ShoeOrderItemList[i].QuantityOutstanding) 
    </td> 
    <td> 
     @(Html.Bootstrap().TextBoxFor(m => m.QuantityDelivered) 
      .Placeholder("Quantity Delivered ") 
      .Prepend("#").Append(Html.Bootstrap() 
      .Button().Text("Accept").Id("AcceptItem"))) 
    </td> 
</tr> 
} 

Ajax

$("#AcceptItem").click(function() { 
    var quatntity = @Html.Raw(Json.Encode(Model.QuantityDelivered)) 
    $.ajax({ 
    url: "ShoeOrder/CreateShoeDelivery", 
    type: "GET", 
    data: { 
      shoeOrderItemId: shoeOrderItemId[i], 
      quantityDelivered: quatntity, 
      dataType: "html" 
     } 
    }); 
}); 

Я просто хотел бы назвать ActionResult со значением, введенным пользователем при нажатии на кнопку AcceptItem.

ответ

1

Я хотел бы просто вызвать ActionResult со значением, введенным пользователем , когда они нажмут кнопку AcceptItem.

Выполните это решение -

Say вы следующий вид. Пожалуйста, укажите правильные идентификаторы полей ввода и обратите внимание, что я сделал операцию POST.

<script src="~/Scripts/jquery-1.10.2.min.js"></script> 

<script> 
    function submitForm() { 

     jQuery.ajax({ 
      type: "POST", 
      url: "@Url.Action("Submit")", 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      data: JSON.stringify({ name: $("#quantity").val() }), 
      success: function (data) { 
       alert(data.Name); 
      }, 
      failure: function (errMsg) { 
       alert(errMsg); 
      } 
     }); 
    } 
</script> 

<input type="text" id="quantity"/> 
<input type="button" value="Click" onclick="submitForm()" /> 

При нажатии на кнопку ударит Отправить Action -

public ActionResult Submit(string name) 
    { 
     return Json(new Person() { Name = name + " Its Me" }); 
    } 

и действие просто вернет простой объект Person (я использовал его, например, цели).

public class Person 
{ 
    public string Name { get; set; } 
} 

Теперь при нажатии на кнопку -

enter image description here

Если вы хотите сделать операцию GET, то JQuery код должен быть, как это -

jQuery.ajax({ 
    type: "GET", 
    url: "@Url.Action("Submit")" + "/" + $("#quantity").val(), 
    dataType: "json", 
    contentType: "application/json; charset=utf-8", 
    data: "", //JSON.stringify({ name: $("#quantity").val() }), 
    success: function (data) { 
     alert(data.Name); 
    }, 
    failure: function (errMsg) { 
     alert(errMsg); 
    } 
}); 

}

Не забудьте добавить AllowGet в JsonResponse -

public ActionResult Submit(string id) 
    { 
     return Json(new Person() { Name = id + " Its Me" }, JsonRequestBehavior.AllowGet); 
    } 
+0

Благодарим за отзыв. Мне нужно передать 'shoeOrderItemId' из скрытого поля и' количество', введенное в текстовое поле пользователем '@ Html.DisplayFor (model => Model.ShoeOrderItemList [i] .Quantity)'. Будет ли лучшее решение использовать такую ​​форму? http://stackoverflow.com/questions/22013660/pass-entity-from-view-to-controller/22014301#22014301 – stink

Смежные вопросы