Blazor Forms and Different Sessions
Hi all,
I'm working on a simple webpage (functioning as a homepage) with blazor (server). My current goal is to create a contact form at the bottom of the page, where customers can send a message to staff.
I created an EditForm using a model and used MailKit in the code fragment to send the message submitted by the EditForm via our mail server. This worked as expected until...
A co'worker told me this approach was not feasible for the following reason:
While one client visiting the website and submitting the form works, it does not work as intended when there are multiple clients accessing the site and editing the form:
E.g. if two clients connect to the website and fill out the form and then submit it simultaneously, the data submited is messed up and mixed between the two accessing sessions. How can this be? I though Blazor would handle these requests asynchronously. I was told the issue lies in the Datacontext being the same for every session and thus all clients editing the same instance of a static object (the EditForm).
What must I change to get the expected behaviour? Thanks in advance!
9 Replies
I think Blazor should just work fine as that's the normal way to do it in Blazor . You can verify it by opening the site in multiple tabs/browsers and then filling the form
Do I not need sessions for this? Isn't the model used in the form a static object and thus always the same for any client?
when the user will visit this page, each user will have his own Model
Test :
Open the site in the normal browser and fill the form
Open the site in incognito mode and fill the form
Enter different data in both of them and you'll see the email sent will be distinct
I will try again, thanks!
your coworker is wrong
what you posted works as intended
you should ask your coworker to demonstrate that issue and watch them struggle
the model used in the form is not static, you haven't declared it as
static
therefore each instance of the component gets its own instance of the modelYou all seem to be right. I do wonder however, why my coworker experienced the issues he described. Generally speaking, would you approve of my methodology for creating a public contact form on a homepage?
yeah there's nothing wrong with the code you've shown, though you might want to consider separating the concern of how to actually send the email to an injected service
This is my first Blazor project, so I'll have to look into services and concern separation as a whole, I assume they work similar to WPF. Right now, my main focus is to get things working in a stable manner. Thank you for your help so far!