خطای The POST request not specify which form being submitted
از Blazor 9 دارم برای پروژم استفاده می کنم. یک فرم ساختم که دو تا input ساده داخلش دارم به همراه یک دکمه submit. موقعی که اطلاعات رو وارد میکنم و روی دکمه submit کلیک می کنم با خطای زیر مواجه میشم.
The POST request does not specify which form is being submitted. To fix this, ensure <forms> elements have a @formname attribute with any unique value, or pass a FormName parameter if using <EditForm>
کدهای مربوط به فرم من هم به صورت زیر هست :
<EditForm Model="Input" OnSubmit="SaveProductAsync">
<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();
}
}
پاسخ هوش مصنوعی
برای رفع خطای مربوط به عدم مشخص بودن فرم، شما باید یک ویژگی @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();
}
}
با این تغییر، خطا باید برطرف شود و فرم به درستی کار کند.
استفاده از ویژگی 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 در صفحه خود داشته باشیم.
- آموزش نصب و راه اندازی دیتابیس PostgreSQL در ویندوز
- PostgreSql چیست ؟ چه کاربردهایی دارد ؟
- دسترسی به پکیج های nuget در زمان قطع نت بین الملل
- نمایش آخرین ردیف دیتاگیرید موقع لود در wpf
- مشکل اینترنت جهانی و عدم دسترسی به cdnjs.cloudflare.com
- مشکل در نصب sql server 2022
- جلوگیری از اد شدن خودکار در گروه و کانال تلگرام
- کم کردن حجم فیلم توسط کد در Asp net core
- چه کسانی استوری تلگرام را می بینند ؟
- برای کسب و کار تلگرام پرمیوم بهتره یا واتس اپ بیزینس ؟
- تفاوت بین Blazor و Angular و react.js چیست ؟
- Blazor چیست ؟ کاربرد Blazor در وب چیست ؟
- فرق بین (Blazor Client (web Assembly و Blazor Server چیست ؟
- پروژه از نوع Blazor چگونه کار می کند؟
- نمایش فرم مودال (Pop up) در بلیزر چگونه است ؟
- کامپوننت (Component) در بلیزر (Blazor) چیست ؟ کاربرد Component چیست ؟
- ارسال مقادیر بین کامپوننت ها در Blazor چگونه می باشد ؟ ارتباط بین کامپوننت ها در بلیزر
- کاربرد پارامتر RenderFragment در Blazor چیست ؟
- دلیل خطای component name cannot start with a lowercase charachter در Blazor
- مفهوم و کاربرد Event CallBack در Blazor چیست ؟