Прочитать введенный текст на кнопке отправки - PullRequest
0 голосов
/ 06 апреля 2019

HTML

<div class="fc-option-more-input">
     <input type="number" id="itemCount">
     <button type="submit" onclick="location.href='@Url.Action("AddToCart", "Controller", new { id = Model[i].ItemID, itemCount = ??? })'" class="button button-add-custom-qty" disabled="disabled">
         <span>Add</span>
     </button>
</div>

Контроллер

public ActionResult AddToCart(int id, int itemCount)
    {
        var ItemToAdd = db.Items
            .Single(item => item.ItemID == id);
        var cart = ShoppingCart.GetCart(this.HttpContext);
        ItemVM model = new ItemVM();
        model.ID = ItemToAdd.ItemID;
        model.ItemName = ItemToAdd.ItemName;
        model.ItemPrice = ItemToAdd.ItemPrice;
        model.ImageURL = ItemToAdd.ImageUrl;
        model.ItemPrice = ItemToAdd.ItemPrice * itemCount;
        cart.AddToCart(model, itemCount);
        return RedirectToAction("Index");
    }    

Когда кнопка нажата, мне нужно как-то прочитать текстовый ввод (номер) элемента ввода и отправить его на контроллер. Как этого достичь?

Ответы [ 3 ]

1 голос
/ 06 апреля 2019

Почему вы не используете модель для отправки ваших форм со стороны контроллера

@model AddToCart
@using (Html.BeginForm("AddToCart", "Controller", FormMethod.Post))
{
  @Html.HiddenFor(m => m.Id)
  @Html.TextBoxFor(m => m.ItemCount )
  <button type="submit"><span>Add</span></button>
}
</div>

Контроллер

public ActionResult AddToCart(AddToCart model)
    {
        var ItemToAdd = db.Items
            .Single(item => item.ItemID == model.Id);
 cart.AddToCart(model, model.ItemCount);
        return RedirectToAction("Index");
    }  

Модель - AddToCart.cs

public int Id {get;set;}
public int ItemCount {get;set;}

Модельэто один тип класса, и если ваша модель - это другая папка, то вы можете дать ссылку, используя @using чуть ниже @model в файле cshtml, где Id - это идентификатор вашего элемента и добавить на страницу со скрытым, чтобы он был доступен в модели на стороне контроллера.

1 голос
/ 06 апреля 2019

Или используйте форму с кодом Razor, например:

<div class="fc-option-more-input">
@using (Html.BeginForm("AddToCart", "Controller", new { id = 0 }, FormMethod.Post))
{
  <input type="number" id="itemCount" name="itemCount"/>
  <button type="submit"><span>Add</span></button>
}
</div>
0 голосов
/ 07 апреля 2019
@using (Html.BeginForm("AddToCart", "ShoppingCart", new { id = Model[i].ItemID}, FormMethod.Post))
{
    <div class="fc-option-more-input">
     <input type="number" id="itemCount" name="itemCount">
     <button type="submit" class="button button-add-custom-qty" disabled="disabled">
         <span>Add</span>
     </button>
}
</div>

Это решило это для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...