AntonioVCruz
On the storefront, every `<label asp-for="...">` renders a `<label>` inside another `<label>`. For example, on `/search` from a clean 5.00 install with sample data: ```html <label for="q"><label for="q">Search keyword:</label></label> <label for="advs"><label for="advs">Advanced search</label></label> <label for="cid"><label for="cid">Category:</label></label> <label for="isc"><label for="isc">Automatically search sub categories</label></label> ``` This is invalid HTML and creates two labels for the same control. The W3C validator reports: > The element `label` must not appear as a descendant of the `label` element. The issue affects storefront labels broadly; `/search` and `/register`, for example, each render 7 nested label pairs. The cause is `LabelTagHelper.ProcessAsync` in `src/Presentation/Nop.Web.Framework/TagHelpers/Public/LabelTagHelper.cs`. The helper targets `<label>` at line 11, creates a complete label with `Generator.GenerateLabel(...)` at line 81, and inserts it with `output.Content.SetHtmlContent(tagBuilder)` at line 91. Because `output.TagName` is never changed, the generated label ends up nested inside the original `<label>` being processed. The admin equivalent avoids this. `src/Presentation/Nop.Web.Framework/TagHelpers/Admin/NopLabelTagHelper.cs:81` sets `output.TagName = "div"` before assigning the generated content, so the resulting markup does not contain nested labels. One important constraint is that the outer label cannot simply be removed. Some storefront views add classes directly to it, for example: ```html <label class="qty-label" for="addtocart_4_EnteredQuantity"><label for="addtocart_4_EnteredQuantity">Qty:</label></label> ``` Classes such as `.qty-label` and `.sc-vendor-label` are styled in `Themes/DefaultClean/Content/css/styles.css` and `styles.rtl.css`, and the install views also apply Bootstrap grid classes directly to labels, including `Views/Install/Index.cshtml:174`. So simply suppressing the outer tag would also drop those attributes. A better fix is to merge the generated label's attributes into the tag being processed, preserving both the view-defined classes and the generated `for` attribute while producing a single valid `<label>`. Verified on nopCommerce `develop` at `ae3d75cfa8`, using a fresh 5.00 install with sample data and the storefront set to `en-US`. I haven't measured how individual screen readers announce the duplicated labels; this report is specifically about the invalid and duplicated markup. I have a fix ready that changes one file (`+5/-3`) and merges the generated label attributes instead of nesting another label. With the fix applied: * `/search`: 18 labels / 7 nested pairs → 11 / 0 * `/register`: 17 labels / 7 nested pairs → 10 / 0 * No nested labels remain across a 14-page storefront sweep * The install wizard still preserves its label classes This may also fit into the accessibility work tracked in #7643. Happy to open a PR.