Привет, у меня есть страница просмотра, которая выглядит так

@model PIC_Program_1._0.Models.Shipping
@using PIC_Program_1._0.Models;

@{
    PIC_Program_1_0Context db = new PIC_Program_1_0Context();

    Model.preparedBy = Model.preparedBy != null  ? Model.preparedBy : IGT.user;

}

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()   
            <table>
                <tr>
                    <th rowspan="3">Items</th>

                    <td>
                        @Html.DropDownList("ItemID", null, null, htmlAttributes: new { @class = "form-control chosen-select", })

                        @{ 
                             Item i = db.Items.Find(int.Parse(Request["ItemID"]));

                             var packedItems = Model.packed(i);
                             var orderedItems = Model.SalesOrder.totalItems(i);

                             var itemMax = orderedItems - packedItems;
                         }

                    </td>                       
                    <td>

                      <input type="number" value="@ViewBag.ItemQ" name="item_qty" class="form-control" max="@itemMax" />

                    </td>

                </tr>

Я хочу, чтобы пользователь мог выбрать элемент из раскрывающегося списка, затем я хочу захватить элемент, выбранный пользователем, и я хочу, чтобы он поместил его в параметр метода

-1
chris 15 Апр 2020 в 00:07
К сожалению, это невозможно с функцией С#. После того как веб-страница будет обработана и отображена, вы больше не сможете запускать код C#. Для этого вам понадобится javascript/jquery.
 – 
Jerdine Sabio
15 Апр 2020 в 00:12

1 ответ

На бэкэнде

Строка strDDLValue = Request.Form["ddlVendor"].ToString();

Вы можете просмотреть это в отладке, чтобы помочь

@Html.DropDownList("ItemsXY", new SelectList(ViewBag.ItemsXY), "Choose Category", new { @class = "form-control" })

$("#ItemsXY").on("change", function () {
 var q = $("#Category").val();

console.log("val = " + q);
});

В вашей коллекции форм

[HttpPost]
public ActionResult PIC_Program_1(SomeViewModel someMV,FormCollection form)
{           
  string strDDLValue = form["ItemsXY"].ToString();    
  return View(MV);
}

Или

string strDDLValue = Request.Form["ItemsXY"].ToString();

Если вам нужен текст выбранного элемента, добавьте скрытое поле и при изменении выбора в раскрывающемся списке задайте текст выбранного элемента в скрытом поле:

Обновите свою модель, чтобы она содержала скрытые значения

// Add this to your VM
public string SelectItemsXY {get;set;}
public string SelectedItemsXYText { get; set; }

<script type="text/javascript">
$(function(){
$("#ItemsXY").on("change", function {
   $("#SelectedvendorText").val($(this).text());
 });
});
</script>

@Html.DropDownListFor(m=>m.SelectedItemsXY , Model.ItemsXY, "Select ItemsXY")
@Html.HiddenFor(m=>m.SelectedItemsXYText)
0
Transformer 15 Апр 2020 в 01:36