Home > other >  How to send the value of a checkbox input instead of the boolean in ASP NET Core?
How to send the value of a checkbox input instead of the boolean in ASP NET Core?

Time:11-20

I have a .cshtml view like this:

<form asp-controller="X" asp-action="Y">
    @for (int i = 0; i < Model.SomeListOfStrings.Count; i  )
    {
       <input type="checkbox" value="@Model.SomeListOfStrings[i]" />
    }
    <input type="submit" />
</form>

I want to send the value of this <input type="checkbox" value="@Model.SomeListOfStrings[i]" /> instead of the boolean in my request (and only if the checkbox is checked). How can I do this?

CodePudding user response:

You should be able to do something like this in your cshtml:

<form asp-controller="Home" asp-action="Index">
     @for (int i = 0; i < Model.SomeListOfStrings.Count; i  )
     {
         <input name="AreChecked" type="checkbox" value="@Model.SomeListOfStrings[i]" /> @Model.SomeListOfStrings[i]
         <br />
     }
        <input type="submit" />
</form>

Give your input's the same name - AreChecked in this example. Set the value to your strings in your collection as you are already.

Then, in your controller method, add a List<string> parameter called AreChecked or whatever you named it, and that should automatically bind the checked items and have their values upon submitting:

[HttpPost]
public IActionResult Index(List<string> AreChecked)
{
    return Ok();
}

Example view:

view showing 3 checkboxes

If I check the "hi" and "hello" checkboxes, when I submit the form, the controller's parameter is bound with those values:

controller parameter list showing checked items values

I referenced this page to do this if you want more information.

  • Related