Проверьте модель на истинные значения - PullRequest
0 голосов
/ 04 января 2019

У меня есть модель в основном булевых свойств с 5 дополнительными строками и int. Мой вопрос, есть ли способ проверить, есть ли по крайней мере 3 истинных значения в этой модели. Я знаю, что могу просто циклически перебирать значения, но мои имена свойств в настоящее время являются другими именами вместо checkbox1 checkbox2 и так далее. Я хотел бы сохранить уникальные имена, если это возможно. Я не уверен, возможно ли то, что я хочу.

Модель:

namespace FacilitesPledgeForm.Models {
    public class FacilitiesPledge 
    {
     public bool LightsOff {get; set;}
     public bool PowerDown {get; set;}
     public bool PrintLess {get; set;}
     public bool Stairs {get; set;}
     public string test1 {get; set;}
     public string test1 {get; set;}
     public string test2 {get; set;}
     public string test3 {get; set;}
     public string test4 {get; set;}
     public string test5 {get; set;}
     public int num {get; set;}
   }

}    

Контроллер:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Submit_PledgeForm(FacilitiesPledge facilitiesPledge)
    {
        //I want to loop here for at least 3 true values and if there isn't add an error to the model to make it invalid

        if (!ModelState.IsValid)
        {
            return View("Index", facilitiesPledge);
        }

        facilitiesPledge.UserName = User.Identity.Name;
        facilitiesPledge.Email = User.Identity.Name.ToUpper();
        facilitiesPledge.Year = DateTime.Now.Year;

        new PledgeFormStore().InsertPledgeAcceptance(facilitiesPledge);

        return View("SuccessfulSubmission");
    }

1 Ответ

0 голосов
/ 04 января 2019

добавьте ваших логических членов в список

с использованием проверки linq, если число истинных логических членов больше или равно 3, повторное значение true

public class FacilitiesPledge
{
    public bool LightsOff { get; set; }
    public bool PowerDown { get; set; }
    public bool PrintLess { get; set; }
    public bool Stairs { get; set; }
    public string test1 { get; set; }
    public string test2 { get; set; }
    public string test3 { get; set; }
    public string test4 { get; set; }
    public string test5 { get; set; }
    public int num { get; set; }
    public bool IsValid()
    {
        //add your boolean members
        List<bool> items = new List<bool> { LightsOff, PowerDown, PrintLess, Stairs };
        //if count of true Boolean member more than or equeal to 3 reteurn true 
        bool isValid = items.Count(x => x == true) >= 3;
        return isValid;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...