【问题标题】:How to get multiple checkbox for one property in MVC如何在 MVC 中为一个属性获取多个复选框
【发布时间】:2018-12-05 17:41:13
【问题描述】:

我正在为我的实践制作一个简单的 mvc 项目。但我不知道如何为模型的一个属性放置多个复选框。

例如,

 public class TestVeiwModel
 {
     public string LanguagePreference {get; set;}
 }

鉴于此,我想为此 LanguagePreference 属性放置 3 个复选框。 英语、法语和其他, 因此,用户可以只选择其中一个复选框,也可以不选择其中任何一个。 如果选择英语,LanguagePreference 将为英语。除了可以取消选择之外,这与单选按钮的行为非常相似。但我希望这个看起来像复选框。

我尝试使用 @Html.CheckBoxFor 和 @Html.CheckBox 助手,但我无法完成这项工作。

如果有人能帮助我,我将不胜感激。

【问题讨论】:

  • 复选框在这种情况下没有意义 - 用户可以选择所有 3 个(使用带有“无”按钮的单选按钮)

标签: html asp.net asp.net-mvc razor


【解决方案1】:

在这种情况下你应该使用单选按钮。但是如果你需要这种复选框的行为,你可以使用 jquery。 您还需要一个属性来获得选择哪一个。

public class TestVeiwModel
{
     public string LanguageName {get; set;}
     public bool IsSelected {get; set;}
}

之后绑定你的主题列表并像这样传递给视图。

@model List<yourproejctName.modelNameSpace.TestVeiwModel> //Path of your model

for (int i = 0; i < Model.Count; i++)
{
   @Html.CheckBoxFor(r => Model[i].IsSelected, htmlAttributes: new { @class = "chkBoxClass", onchange = "fun_Onchange(this)" })

   @Html.DisplayFor(r => Model.LanguageName)
}

并且需要编写jquery函数:-

  function  fun_Onchange(evt)
  {
       if($(evt).is(':checked')){
        $('.chkBoxClass').prop('checked', false);
        $(evt).prop('checked', true);
    }
    else{
        $('.chkBoxClass').prop('checked', false);
    }
  }

【讨论】:

    【解决方案2】:

    为类似的选项写一个枚举

        public enum LanguageOptionSelected
        {       
           English= 0,
           French= 1,        
           Other= 2
        }
    

    并在模型中编写以下代码:

    public LanguageOptionSelected? Option { get; set; }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 2019-09-19
      相关资源
      最近更新 更多