Skip to content

Commit 637efeb

Browse files
authored
Merge pull request #83 from haacked/haacked/checkbox-remote-validation-fix
Checkbox remote validation fix
2 parents 3e40223 + 6bb07bd commit 637efeb

9 files changed

+28
-9
lines changed

Controllers/Validations.cs

+6
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ public IActionResult CheckRemote(string id)
1010
return Ok(id == "42");
1111
}
1212

13+
[HttpPost]
14+
public IActionResult CheckboxRemote(bool isChecked)
15+
{
16+
return Ok(isChecked);
17+
}
18+
1319
[HttpGet]
1420
public IActionResult Test()
1521
{

Pages/Demos/Checkboxes.cshtml

+2-2
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@
5252
<label>@animal</label>
5353
}
5454
<span asp-validation-for="SelectedAnimals"></span>
55-
@if (Model.SelectedAnimals.Any()) {
56-
<em class="results">Selected animals: @string.Join(", ", Model.SelectedAnimals)</em>
55+
@if (Model.SelectedAnimals!.Any()) {
56+
<em class="results">Selected animals: @string.Join(", ", Model.SelectedAnimals!)</em>
5757
}
5858
</div>
5959

Pages/Demos/Checkboxes.cshtml.cs

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public IActionResult OnPost()
4141

4242
public class InputModel
4343
{
44+
[Remote("CheckboxRemote", "Validations", HttpMethod = "Post")]
4445
public bool IsChecked { get; set; }
4546
}
4647

@@ -50,6 +51,7 @@ public class InputModel
5051
public class Selectable
5152
{
5253
public required string Name { get; set; }
54+
5355
public bool IsSelected { get; set; }
5456
}
5557
}

dist/aspnet-validation.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,13 @@ var MvcValidationProviders = /** @class */ (function () {
396396
if (!hasValue) {
397397
continue;
398398
}
399-
fields[fieldName] = fieldElement.value;
399+
if (fieldElement instanceof HTMLInputElement &&
400+
(fieldElement.type === 'checkbox' || fieldElement.type === 'radio')) {
401+
fields[fieldName] = fieldElement.checked ? fieldElement.value : '';
402+
}
403+
else {
404+
fields[fieldName] = fieldElement.value;
405+
}
400406
}
401407
var url = params['url'];
402408
var encodedParams = [];

dist/aspnet-validation.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/aspnet-validation.min.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "aspnet-client-validation",
3-
"version": "0.9.2",
3+
"version": "0.9.3",
44
"description": "Enables ASP.NET MVC client-side validation, without jQuery!",
55
"main": "dist/aspnet-validation.js",
66
"style": "dist/aspnet-validation.css",

src/index.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,12 @@ export class MvcValidationProviders {
351351
continue;
352352
}
353353

354-
fields[fieldName] = fieldElement.value;
354+
if (fieldElement instanceof HTMLInputElement &&
355+
(fieldElement.type === 'checkbox' || fieldElement.type === 'radio')) {
356+
fields[fieldName] = fieldElement.checked ? fieldElement.value : '';
357+
} else {
358+
fields[fieldName] = fieldElement.value;
359+
}
355360
}
356361

357362
let url: string = params['url'];

0 commit comments

Comments
 (0)