دسته بندی ها
02:31 1398/08/20

خطا هنگام submit شدن فرم موقع استفاده از asp-area

مشخصات سوال کننده :
کاربر : pedram_khan     امتیاز کاربر : 277     رتبه کاربر : 6
دسته بندی : Asp.net Core

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

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

به نظر می رسد مشکل شما ممکن است ناشی از نحوه تعریف مسیرها یا عدم ارسال صحیح اطلاعات در فرم باشد. برای رفع این مشکل، پیشنهاد می کنم چند نکته زیر را بررسی کنید:

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 یا اکشن مربوطه وجود ندارد.

اگر پس از بررسی این موارد هنوز مشکل برطرف نشده، می توانید با ارایه کد کنترلر و چگونگی تنظیم مدل، اطلاعات بیشتری را به اشتراک بگذارید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : mobile_app 02:35 1398/08/20

شما همه چیز رو درست نوشتید اما جای تعجب !!! اینجاست که در متد 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 تغییراتی صورت گرفته که برای کسب اطلاعات بیشتر می تونید به این لینک مراجعه کنید

ویرایش شده در دوشنبه 20 آبان 1398 ساعت 02:38:40
به این پاسخ امتیاز بدهید    0
امتیاز: 18 رتبه: 40
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود