دریافت متن تگ Select موقع Submit فرم
یک تگ Select دارم به شکل زیر
<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>
وقتی روی دکمه send کلیک می کنم به راحتی میتونم id تگ select انتخاب شده رو در سمت کنترلر داشته باشم. اما میخوام علاوه بر id مقدار Text تگ select هم در سمت کنترلر داشته باشم.
public IActionResult mrAction(byte leavetype)
{
//do something
}
لطفا راهنمایی کنید جهت دریافت متن تگ Select موقع Submit فرم را در سمت کنترلر دریافت کنم ؟
پاسخ هوش مصنوعی
برای دریافت متن تگ 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 نیز به کنترلر فرستاده می شود.
چیزی که الان به ذهنم میرسه اینه که شما 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)
*قبل از گزاشتن پست امتحان کردم و جواب داد.
موفق باشید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2