2017-07-28 28 views
0
//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"); 
     } 

    } 

Checboxはモデルには影響しません。常にデフォルト値です。おそらくチェックボックスはちょうどオンに戻ります。しかし、私はJavaScript +余分な1つの入力と動作してみました。私はjavascirptコントロールを使用したくないASP.netコアでチェックボックスコントロールを行う方法

+1

完全に細かいチェックボックスのように見えます。もっと正確にしてください。何がうまくいかない?それはレンダリングされませんか?コントローラーとの間で情報の受け渡しはできませんか?あなたは例外を受け取りますか? – Marco

+0

@Marco申し訳ありませんが、このチェックボックスは** Model.CompanySetting.SendEmail **には影響しません。常にデフォルト値 – OMANSAK

+0

あなたのモデル、コントローラ、およびビューを表示してください。検証可能な例が必要です – Marco

答えて

0
<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'); 
    } 
}); 

このコードは動作します。私はそれを使用する必要がありますか?

0

チェックボックスをオンまたはオフにすると、プロパティ 'value'は変更されていないため、 'data-val'が変更されているためです。そのため、変更はモデルに拘束されません。

回避策を使用できます。私はjavascriptを介してdata-valのProperty値をvalueに転送するもっと簡単なソリューションの下で使用しました。

<input asp-for="@Model.sendMail" type="checkbox" value="@Model.sendMail" />&nbsp;Approve? 

<script> 
$('#sendMail').on('change', function() { 
    $('#sendMail').val($('#sendMail').attr('data-val')); 
}); 
</script> 
関連する問題