Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Clearing a form after post when using Razorpages model binding

I am using Razor Pages with model binding. When my form posts, the values remain in there when the page reloads after posting. I have tried using ModelState.Clear() but this doesn't seem to do anything.

Specifically, I have an HTML form like this:

  <form method="post">
        <textarea asp-for="Input.Text" class="form-control" placeholder="No data"></textarea>

        <button type="submit" asp-route-param="Submit">Submit</button>
    </form>

and the following controller:

public class TestFormModel : PageModel
    {
        [BindProperty]
        public InputModel Input { get; set; }

        public IActionResult OnPost()
        {
            ModelState.Clear(); 
            return Page();
        }
    }

    public class InputModel
    {
        public string Text {get;set;}

    }

On submission, the form remembers the text submitted - I want it to be cleared.

I can do this with jQuery on the client side, but I wondered if there's a RazorPages trick. ModelState.Clear() doesn't seem to do what I want.

Many thanks

like image 760
SamW Avatar asked Oct 17 '25 14:10

SamW


2 Answers

I addition to clearing the model state you need to also clear the bound property. like this:

    public IActionResult OnPost()
    {
        ModelState.Clear();
        Input.Text = string.Empty;
        return Page();
    }
like image 200
Drew Brasher Avatar answered Oct 21 '25 04:10

Drew Brasher


Because the bound model (in your case InputModel) may have several properties within it, clearing the properties one at a time may not be ideal.

The most suitable way to clear a form in this case would be:

public IActionResult OnPost()
{
    /*
     * Your logic...
     */
    foreach (var entry in ModelState.Values)
    {
        entry.AttemptedValue = "";
        entry.RawValue = "";
    }
    return Page();
}

Here, we clear the AttemptedValue and RawValue of all properties in the bound Model essentially resetting them after post returns the view.

like image 45
Stephen Murumba Avatar answered Oct 21 '25 03:10

Stephen Murumba



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!