У меня есть условный ввод или выберите список в моем представлении бритвы.Когда я помещаю действие непосредственно в мою форму, оно отлично работает;но когда я пытаюсь получить значение формы и отправить его на мой контроллер, оно не передает выбранное значение в список выбора.
В моей модели
public MyItemModel()
{
AllowedQuantities = new List<SelectListItem>();
}
public int Quantity { get; set; }
public List<SelectListItem> AllowedQuantities { get; set; }
public int EnteredQuantity { get; set; }
На мой взгляд
<td class="contribute">
<form id="add-to-cart-registry-form">
@if (item.AllowedQuantities.Count > 0)
{
<select asp-for="@item.EnteredQuantity" asp-items="@item.AllowedQuantities" name="enteredquantity" class="qty-dropdown" id="qty-drp"></select>
}
else
{
<input name="enteredquantity" type="text" class="update-textbox gr-item-update-split" value="@item.EnteredQuantity" />
}
<input type="submit" value="Add to Cart" class="update-button gr-item-update-split gr-item-update-split-button" onclick="addProductCartFmRegistry('@Url.Action("AddItemsToCartFromRegistry", new { registryItemId = item.Id, shoppingCartTypeId = (int)ShoppingCartType.ShoppingCart })', '#add-to-cart-registry-form')" />
</form>
</td>
<script>
function addProductCartFmRegistry(addToCartFmRegistryUrl, formselector) {
var atcUrl = addToCartFmRegistryUrl;
var formdata = $(formselector).serialize();
if (AjaxCart.loadWaiting != false) {
return;
}
AjaxCart.setLoadWaiting(true);
$.ajax({
cache: false,
url: atcUrl,
data: formdata,
type: 'post',
success: AjaxCart.success_process,
complete: AjaxCart.resetLoadWaiting,
error: AjaxCart.ajaxFailure
});
}
</script>
и мой контроллер
[HttpPost]
public virtual IActionResult AddItemsToCartFromRegistry(int registryItemId, int shoppingCartTypeId, IFormCollection form)
{
}
, когда я готовлю свою модель, я устанавливаю введенное количество по умолчанию равным 1.
, если оно от входа, оно передает правильное введенное значение в контроллер;но если это список выбора, он пропускает 1 вместо выбранной опции.
Это работает совершенно нормально, если я использую действие в своей форме, как;
<td class="contribute">
<form action="@Url.Action("AddItemsToCartFromRegistry", new { registryItemId = item.Id, shoppingCartTypeId = (int)ShoppingCartType.ShoppingCart })" method="post">
@if (item.AllowedQuantities.Count > 0)
{
<select asp-for="@item.EnteredQuantity" asp-items="@item.AllowedQuantities" name="enteredquantity" class="qty-dropdown" id="enteredqty-@item.Id"></select>
}
else
{
<input name="enteredquantity" type="text" value="@item.EnteredQuantity" class="update-textbox gr-item-update-split" id="enteredqty-@item.Id" />
}
<input type="submit" value="Add To Cart" class="update-button gr-item-update-split gr-item-update-split-button" onclick="addProductCartFmRegistry(@item.Id)" />
</form>
</td>
, но я хотел бы сделать это свызов ajax для возврата предупреждений json на мою страницу.
Есть идеи, чего не хватает в версии вызова ajax?И как отправить правильное значение выбранного элемента списка на мой контроллер?