خطا هنگام submit شدن فرم موقع استفاده از asp-area
سلام دوستان
یک پروژه با Asp.net core 3 دارم. در این پروژه یک Area به نام AdminPanel دارم و در فایل startup.cs هم Route مربوط رو به شکل زیر تعریف کردم
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
//For Area
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapAreaControllerRoute(
"AdminPanel",
"AdminPanel",
"AdminPanel/{controller=AdminHome}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
"default", "{controller=Home}/{action=Index}/{id?}");
});
یک فرم هم دارم که در این Area قرار داره. اطلاعات فرم هم به صورت زیر هست
<form asp-area="AdminPanel" asp-controller="UserManagement" asp-action="Active" method="post">
</form>
اما موقعی که در این فرم روی دکمه submit کلیک می کنم به اکشن مربوطه یعنی اکشن Active که در کنترلر UserManagement و در Area به نام AdminPanel هست نمیره و خطای زیر رو میده

همونجوری که توی عکس مشخص هست اصلا توی Url مرورگر Area رو نمیاره و به سمت اکشن مربوط Post نمیشه اطلاعات.
ممکنه بفرمایید اشکال از چی میتونه باشه ؟
پاسخ هوش مصنوعی
به نظر می رسد مشکل شما ممکن است ناشی از نحوه تعریف مسیرها یا عدم ارسال صحیح اطلاعات در فرم باشد. برای رفع این مشکل، پیشنهاد می کنم چند نکته زیر را بررسی کنید:
1. **بررسی تعریف Route**: اطمینان حاصل کنید که تعریف مسیرها به درستی در `Startup.cs` تنظیم شده است. در کد شما، دو بار از `app.UseEndpoints` استفاده شده است که ممکن است باعث ابهام شود. فقط باید یک بار این تابع را فراخوانی کنید.
app.UseEndpoints(endpoints =>
{
endpoints.MapAreaControllerRoute(
"AdminPanel",
"AdminPanel",
"AdminPanel/{controller=AdminHome}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
2. **بررسی URL**: لطفاً تأیید کنید که با فرم، URL به درستی ساخته می شود. برای این کار می توانید از ابزارهای توسعه دهنده (Developer Tools) مرورگر استفاده کنید و بررسی کنید که URL ساخت شده در هنگام submit شدن فرم چگونه است.
3. **اضافه کردن محتویات فرم**: مطمین شوید که در فرم خود، ورودی هایی برای ارسال داده ها دارید. فرم شما خالی است و بهتر است حداقل یک دکمه submit و برخی ورودی ها برای آزمایش ارسال کنید:
<form asp-area="AdminPanel" asp-controller="UserManagement" asp-action="Active" method="post">
<input type="text" name="username" />
<button type="submit">Submit</button>
</form>
4. **فعال سازی فریم ورک**: اگر هنوز مشکلی وجود دارد، اطمینان حاصل کنید که فریم ورک MVC به طور کامل فعال شده و نواقصی در Controller یا اکشن مربوطه وجود ندارد.
اگر پس از بررسی این موارد هنوز مشکل برطرف نشده، می توانید با ارایه کد کنترلر و چگونگی تنظیم مدل، اطلاعات بیشتری را به اشتراک بگذارید.
شما همه چیز رو درست نوشتید اما جای تعجب !!! اینجاست که در متد configure از کلاس startup.cs چرا مسیر رو 2 بار تعریف کردید ؟
app.UseRouting();
//For Area
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapAreaControllerRoute(
"AdminPanel",
"AdminPanel",
"AdminPanel/{controller=AdminHome}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
"default", "{controller=Home}/{action=Index}/{id?}");
});
مسیر بالا رو تعریف کنید. چون در مسیر بالا هم Area تعریف شده و هم مسیریابی عادی یا همون بخش default
دقت کنید که در Asp.net core 3 در سیستم مسیریابی یا routing تغییراتی صورت گرفته که برای کسب اطلاعات بیشتر می تونید به این لینک مراجعه کنید
- آموزش استفاده از پلاگین گردونه شانس در 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