如何在MVC中为一个属性获取多个复选框

时间:2018-06-26 22:57:56

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

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

例如

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

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

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

如果有人能帮助我,我将非常感谢。

2 个答案:

答案 0 :(得分:0)

在这种情况下,您应该使用单选按钮,但是如果您需要这种复选框的行为,则可以使用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);
    }
  }

答案 1 :(得分:0)

为诸如此类的选项写一个枚举

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

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

public LanguageOptionSelected? Option { get; set; }