Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core mvc 模型绑定布尔单选按钮在.NETCore中是如何工作的?_Asp.net Core Mvc_Model Binding_Asp.net Core Tag Helpers - Fatal编程技术网

Asp.net core mvc 模型绑定布尔单选按钮在.NETCore中是如何工作的?

Asp.net core mvc 模型绑定布尔单选按钮在.NETCore中是如何工作的?,asp.net-core-mvc,model-binding,asp.net-core-tag-helpers,Asp.net Core Mvc,Model Binding,Asp.net Core Tag Helpers,使用标记帮助程序将布尔视图模型属性绑定到.NETCore中的单选按钮时遇到问题 <fieldset class="form-group"> <div class="row"> <label asp-for="AffectsUsers" class="col-sm-2 col-form-label text-right">Affects Users?</label> <div class="col-sm-

使用标记帮助程序将布尔视图模型属性绑定到.NETCore中的单选按钮时遇到问题

<fieldset class="form-group">
    <div class="row">
        <label asp-for="AffectsUsers" class="col-sm-2 col-form-label text-right">Affects Users?</label>
        <div class="col-sm-10">
            <div class="mt-2">
                <div class="form-check form-check-inline">
                    <input class="form-check-input" asp-for="AffectsUsers" type="radio" value="true" />
                    <label class="form-check-label" asp-for="AffectsUsers">Yes</label>
                </div>
                <div class="form-check form-check-inline">
                    <input class="form-check-input" asp-for="AffectsUsers" type="radio" value="false" />
                    <label class="form-check-label" asp-for="AffectsUsers">No</label>
                </div>
            </div>
            <span asp-validation-for="AffectsUsers" class="text-danger"></span>
        </div>
    </div>
</fieldset>
仅为第一个单选按钮调用事件。我假设这是因为我使用单选按钮标记帮助器,它创建具有相同ID的多个输入


如何将视图模型中的布尔值绑定到单选按钮,以便更改事件根据控件的值做出适当响应?

我首先像Stephen建议的那样覆盖ID,以确保有效的HTML。此外,我设置了“for”标记而不是“asp for”标记,并更改了ID以引用它链接到的特定单选按钮

<fieldset class="form-group">
    <div class="row">
        <label asp-for="AffectsUsers" class="col-sm-2 col-form-label text-right">Affects Users?</label>
        <div class="col-sm-10">
            <div class="mt-2">
                <div class="form-check form-check-inline">
                    <input class="form-check-input" id="AffectsUsersYes" asp-for="AffectsUsers" type="radio" value="true" />
                    <label class="form-check-label" for="AffectsUsersYes">Yes</label>
                </div>
                <div class="form-check form-check-inline">
                    <input class="form-check-input" id="AffectsUsersNo" asp-for="AffectsUsers" type="radio" value="false" />
                    <label class="form-check-label" for="AffectsUsersNo">No</label>
                </div>
            </div>
            <span asp-validation-for="AffectsUsers" class="text-danger"></span>
        </div>
    </div>
</fieldset>

重复的
id
属性是无效的html。为每个单选按钮指定一个唯一的
id
,或使用
id=”“
删除它,然后为它们指定一个类名,以便使用$('.yourClassName')。change(){`-然后参考确定选中哪个单选按钮,作为旁注,您的
元素也将不起作用-您可以使用
我在遵循Bootstrap的单选按钮放置指南中的标签和输入:您说它们不起作用是什么意思?我现在正在运行我的应用程序,它们显示不起作用单选按钮旁边有正确的文本。我的jQuery更改事件按预期触发。它是无效的HTML还是有其他无效内容?我希望有干净的标记,但目前找不到任何错误。单击标签-它没有设置单选按钮:)-它需要是
(另一个也一样,但是将
属性更改为
的“AffectsUsersNo”
)-以及不
asp的=“…”
哦,我现在明白了!我甚至没有注意到标签不能点击!谢谢你的提示,Stephen!(我将编辑我的答案。)
<fieldset class="form-group">
    <div class="row">
        <label asp-for="AffectsUsers" class="col-sm-2 col-form-label text-right">Affects Users?</label>
        <div class="col-sm-10">
            <div class="mt-2">
                <div class="form-check form-check-inline">
                    <input class="form-check-input" id="AffectsUsersYes" asp-for="AffectsUsers" type="radio" value="true" />
                    <label class="form-check-label" for="AffectsUsersYes">Yes</label>
                </div>
                <div class="form-check form-check-inline">
                    <input class="form-check-input" id="AffectsUsersNo" asp-for="AffectsUsers" type="radio" value="false" />
                    <label class="form-check-label" for="AffectsUsersNo">No</label>
                </div>
            </div>
            <span asp-validation-for="AffectsUsers" class="text-danger"></span>
        </div>
    </div>
</fieldset>
$('input[type=radio][name=AffectsUsers]').change(function() {
    if (this.value === 'true') { ... } else { ... }
});