Asp.net mvc 如何在ASP.net内核中进行复选框控制
Checbox不影响模型,它始终是默认值。可能复选框正好返回。但我尝试了javascript+额外的一个输入,效果很好。我不想使用javascirpt控件Asp.net mvc 如何在ASP.net内核中进行复选框控制,asp.net-mvc,asp.net-core-mvc,Asp.net Mvc,Asp.net Core Mvc,Checbox不影响模型,它始终是默认值。可能复选框正好返回。但我尝试了javascript+额外的一个输入,效果很好。我不想使用javascirpt控件 //Part of View <div class="checkbox"> <label id="sendEmail" class="" > <input id="sendEmailInput" type="checkbox" asp-for="CompanySet
//Part of View
<div class="checkbox">
<label id="sendEmail" class="" >
<input id="sendEmailInput" type="checkbox" asp-for="CompanySetting.SendEmail">Send mail for jobs.
</label>
</div>
//Model
public partial class CompanySetting
{
public int CompanyId { get; set; }
public bool SendEmail { get; set; }
public virtual CompanyUsers Company { get; set; }
}
//Controller
public ActionResult AccountSettingSave(CompanyAccountViewModel model)
{
try
{
CompanySetting settingModel = _companySettingService.GetByCompanyId(GetId());
settingModel.SendEmail = model.CompanySetting.SendEmail;
_companySettingService.UpdateBill(settingModel);
TempDataMessage("message", "Hesap ayarları başarıyla güncellendi.");
return RedirectToAction("AccountSettings");
}
catch
{
TempDataMessage("message", "Hesap ayarları güncellenemedi.");
return RedirectToAction("AccountSettings");
}
}
这个代码有效。我应该使用它吗?这是因为当选中/取消选中复选框时,属性“值”没有改变,而是改变了“数据值”。这就是更改不绑定到模型的原因 你可以利用你的变通方法。我使用了下面更简单的解决方案,它通过javascript将数据val的属性值转换为值
<div class="checkbox">
<input id="sendMail" type="text" asp-for="CompanySetting.SendEmail" style="display: none" />
<label id="sendMailLabel"><input type="checkbox">Send Mail for Jobs</label>
</div>
if ($('#sendMail').val() == 'True') {
$('#sendMailLabel').addClass('checked');
} else {
$('#sendMailLabel').removeClass('checked');
}
$('#sendMailLabel').on('change', function () {
if ($('#sendMailLabel').hasClass('checked')) {
$('#sendMail').val('True');
} else {
$('#sendMail').val('False');
}
});
在我看来,这是一个很好的复选框。请说得更准确些。什么不起作用?它不会渲染吗?is是否不向控制器传递信息?您是否收到例外情况?@Marco抱歉,此复选框不影响Model.CompanySetting.sendmail。它始终是默认值。请向我们显示您的型号、控制器和视图。我们需要一个可验证的示例作为提示:如果您有一个特定模型的控制器操作。让VisualStudio为您做最重要的工作,并在操作方法上单击鼠标右键并选择“添加视图”,构建视图bx。虽然这不会有你需要的样式,但它至少给了你一个工作的起点seconds@Marco编辑并回答了一个解决方案。你能检查一下答案吗?
<input asp-for="@Model.sendMail" type="checkbox" value="@Model.sendMail" /> Approve?
<script>
$('#sendMail').on('change', function () {
$('#sendMail').val($('#sendMail').attr('data-val'));
});
</script>