دسته بندی ها
17:26 1403/12/27

خطای The POST request not specify which form being submitted

مشخصات سوال کننده :
کاربر : hakan2025     امتیاز کاربر : 3     رتبه کاربر : 136
دسته بندی : Blazor

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

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

برای رفع خطای مربوط به عدم مشخص بودن فرم، شما باید یک ویژگی @formname برای عنصر <EditForm> اضافه کنید یا اگر از <EditForm> استفاده می کنید، پارامتر FormName را همراه با آن ارسال کنید. به کد شما اضافه کردن این ویژگی به شکل زیر است:

<EditForm Model="Input" OnSubmit="SaveProductAsync" @formname="productForm">
   <input @bind=Input.Name type="text" class="form-control" id="name" placeholder="product name">
   <label for="name">Name</label>
      
   <input @bind=Input.Price type="number" class="form-control" id="price" placeholder="product price">
   <label for="price">Price</label>
       
   <div class="col-12">
       <button class="btn btn-primary" type="submit">Save</button>
   </div>
</EditForm>

@code {
    public ProductDto Input { get; set; }
    protected override void OnInitialized()
    {
        Input ??= new();
    }
}

با این تغییر، خطا باید برطرف شود و فرم به درستی کار کند.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 17:33 1403/12/27

استفاده از ویژگی FormName در فرم های Blazor

یکی از تغییرات مهم در Blazor 8 نسبت به نسخه های قبلی اضافه شدن یک attribute به نام FormName در تگ EditForm می باشد. در واقع قبلا نیازی نبود که به فرم ها یک نام منحصربفرد اختصاص بدهیم. اما از نسخه 8 ببعد این موضوع اجباری شده است و فرم ها هم باید یک نام اختصاصی و منحصر بفرد برای خود داشته باشند. بنابراین شما برای رفع این مشکل باید کدهای خودتون رو به صورت زیر تغییر بدید :

<EditForm Model="Input" OnSubmit="SaveProductAsync" FormName="myForm1">
   ...
</EditForm>

@code {
    [SupplyParameterFromForm(FormName = "myForm1")]
    public ProductDto Input { get; set; }
    protected override void OnInitialized()
    {
        Input ??= new();
    }
}

همان طور که ملاحظه می کنید در تگ EditForm از کلمه FormName استفاده کردیم و یک نام منحصربفرد برای فرم اختصاص دادیم. همچنین در قسمت code هم باید از attribute به نام SupplyParameterFromForm استفاده کنیم تا مشخص کنیم که مدلی که مشخص کردیم دقیقا اطلاعات خود را از کدام فرم قرار است دریافت کند. به این ترتیب می توانیم تعداد زیادی Form در صفحه خود داشته باشیم.

ویرایش شده در دوشنبه 27 اسفند 1403 ساعت 17:34:28
به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود