دسته بندی ها
00:38 1399/04/26

دریافت متن تگ Select موقع Submit فرم

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 518     رتبه کاربر : 4
دسته بندی : PHP Asp.net Core Asp.net Web Form Asp.net Mvc

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3664
هوش مصنوعی

پاسخ هوش مصنوعی

برای دریافت متن تگ Select در سمت کنترلر هنگام ارسال فرم، می توانید از یک روش ساده استفاده کنید. شما می توانید مقداری از نوع `SelectListItem` برای هر گزینه ایجاد کرده و در فرم از آن استفاده کنید. سپس در کنترلر می توانید از آن استفاده کنید.

در زیر کد به روز شده ی فرم و کنترلر نشان داده شده است:

<form asp-controller="Home" asp-action="myAction">
  <select id="leavetype" name="leavetype">
    <option value="0">همه</option>
    <option value="1">نوع اول</option>
    <option value="2">نوع دوم</option>
    <option value="3">نوع سوم</option>
    <option value="4">نوع چهارم</option>
  </select>

  <button type="submit">send</button>
</form>

سپس در کنترلر می توانید از کد زیر برای دریافت متن استفاده کنید:

public IActionResult myAction(byte leavetype, string leavetypeText)
{
    // برای دریافت متن انتخاب شده
    var selectedText = leavetypeText;
    //do something با selectedText
}

برای اینکه متن مربوط به گزینه ی انتخاب شده را نیز به کنترلر ارسال کنید، در جاوا اسکریپت می توانید یک تابع بنویسید که به هنگام ارسال فرم، متن گزینه انتخاب شده را به کد زیر اضافه کند:

document.querySelector("form").addEventListener("submit", function(event) {
    var select = document.getElementById("leavetype");
    var selectedOption = select.options[select.selectedIndex].text;
    var input = document.createElement("input");
    input.type = "hidden";
    input.name = "leavetypeText"; // نامی که در کنترلر استفاده می شود
    input.value = selectedOption;
    this.appendChild(input);
});

با این روش، با کلیک بر روی دکمه ارسال، متن تگ Select نیز به کنترلر فرستاده می شود.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : mohammad-i 10:19 1399/04/29

چیزی که الان به ذهنم میرسه اینه که شما Text انتخاب شده رو توی یه hidden input نگهداری کنید و این hidden input رو پاس بدی به کنترلر. به این شکل:

1- قراردادن hidden input  در فرم مربوطه:

<input type="hidden" id="selectedText" name="selectedText" />

2- گرفتن Text انتخاب شده و قرار دادن اون توی hidden input

$("#leavetype").on("change", function () {
            $("#selectedText").val($(this).find("option:selected").text());
        });

3- دریافت hidden input در کنترلر:

public IActionResult Contact(byte leavetype, string selectedText)

*قبل از گزاشتن پست امتحان کردم و جواب داد.

موفق باشید.

به این پاسخ امتیاز بدهید    0
امتیاز: 260 رتبه: 7
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود