ASP. net MVC 5 перенаправить на пользовательскую страницу ошибки, если запрос LINQ возвращает ноль - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть несколько логик c в классе, который использует различные запросы LINQ. Я хотел бы перенаправить пользователя на страницу ошибки клиента, которая находится в Views> shared> CustomError.cs html, если какой-либо из запросов LINQ возвращает ноль. Какой самый простой способ установить это в MVC 5?

Тот же код, который включает запрос LINQ:

public void AddQ2Answer(SurveyCheckboxCollections checkboxes, int id)
{
    using (var db = new RDSContext())
    {
        // *** redirect user to custom error page if s1 == null/empty
        var s1 = db.SecondarySchoolSurveys.FirstOrDefault(s => s.Id == id);

        CheckboxData q2Male = checkboxes.SecondarySchoolCheckboxes["Q2Male"];
        CheckboxData q2Female = checkboxes.SecondarySchoolCheckboxes["Q2Female"];
        CheckboxData q2Other = checkboxes.SecondarySchoolCheckboxes["Q2Other"];
        CheckboxData q2DontWantToSay = checkboxes.SecondarySchoolCheckboxes["Q2DontWantToSay"];

        //numbers of checkboxes marked for validation
        int checkboxValidaiton = 0;

        //update SecondarySchoolSurvey checkbox answers in database with IsChecked values from checkbox dictionary 
        if (q2Male.IsChecked)
        {
            s1.Q2 = Gender.Male;
            checkboxValidaiton++;
        }
        if (q2Female.IsChecked)
        {
            s1.Q2 = Gender.Female;
            checkboxValidaiton++;
        }
        if (q2Other.IsChecked)
        {
            s1.Q2 = Gender.Other;
            checkboxValidaiton++;
        }
        if (q2DontWantToSay.IsChecked)
        {
            s1.Q2 = Gender.None;
            checkboxValidaiton++;
        }

        //validate only 1 checkbox has been marked 
        if (checkboxValidaiton == 0)
        {
            s1.Flag = true;
            s1.FlagContent += "| Question2: no checkboxes marked. ";
        }
        else if (checkboxValidaiton > 1)
        {
            s1.Flag = true;
            s1.FlagContent += "| Question2: more than 1 checkboxes marked. ";
        }
        db.SaveChanges();
    }
}

Я также включил пользовательские ошибки в сети. конфиг:

<system.web>
    <customErrors mode="On" />
</system.web>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...