>

사용자가 사용자 유형을 선택할 수있는 드롭 다운 메뉴가있는 등록 페이지를 만들었습니다 ( Tutor  또는 Student ).

로그인 페이지로 리디렉션되며 유형에 따라 다른 페이지로 리디렉션되어야합니다.

AccountController.cs

[HttpPost] //"Login" Button
public ActionResult Login(UsersModel record)
{
    using (SqlConnection con = new SqlConnection(Helper.GetConnection()))
    {
        con.Open();
        string query = @"SELECT UserID, TypeID FROM Users WHERE Email=@Email AND Password=@Password AND Status!=@Status";

        using (SqlCommand cmd = new SqlCommand(query, con))
        {
            cmd.Parameters.AddWithValue("@Email", record.Email);
            cmd.Parameters.AddWithValue("@Password", record.Password);
            cmd.Parameters.AddWithValue("@Status", "Suspended");
            using (SqlDataReader data = cmd.ExecuteReader())
            {
                if (data.HasRows)
                {
                    while (data.Read())
                    {
                        Session["userid"] = data["UserID"].ToString();
                        Session["typeid"] = data["TypeID"].ToString();
                    }
                    if ((string)Session["typeid"] == "Student")
                        return RedirectToAction("Profile");
                    if ((string)Session["typeid"] == "Tutor")
                        return RedirectToAction("TutorProfile");
                }
                else
                {
                    ViewBag.Error = "<div class = alert alert-danger col-lg-6'>Invalid Credentials.</div>";
                    return View();
                }
            }
        }
    }
}

Visual Studio에서 오류가 발생했습니다 :

"not all code paths return value"

와이즈 비는 아냐  반환 값으로 계산 하시겠습니까?

return RedirectToAction
  • 답변 # 1

    typeid가 학생 또는 교사가 아닌 경우 어떻게됩니까?

    다음 중 하나를 고려하십시오 :

    if ((string)Session["typeid"] == "Student")
        return RedirectToAction("Profile");
    else if ((string)Session["typeid"] == "Tutor")
        return RedirectToAction("TutorProfile");
    
    

    또는 :

    if ((string)Session["typeid"] == "Student")
        return RedirectToAction("Profile");
    if ((string)Session["typeid"] == "Tutor")
        return RedirectToAction("TutorProfile");
    ViewBag.Error = "<div class = alert alert-danger col-lg-6'>Invalid User Type.</div>";
    return View();
    
    

  • 답변 # 2

    컴파일러 오류 CS0161"일부 코드 경로 반환 값은 아님"은 아래에서 // HERE 로 언급 한 주석 부분을 나타냅니다. .

    IF 라면  조건은 FALSE 입니다 , 내가 무엇을 return 해야 해요 ?

    내가 의미하는 바를 설명하기 위해 문장 주위에 중괄호를 감쌌습니다.

    if (data.HasRows)
    {
        while (data.Read())
        {
            Session["userid"] = data["UserID"].ToString();
            Session["typeid"] = data["TypeID"].ToString();
        }
        if ((string)Session["typeid"] == "Student")
        {
            return RedirectToAction("Profile");
        }
        if ((string)Session["typeid"] == "Tutor")
        {
            return RedirectToAction("TutorProfile");
        }
        // HERE
    }
    
    

  • 답변 # 3

    아래의 변경 사항을 확인하십시오.

    string sRedirecttoAction = String.Empty;
    using (SqlConnection con = new SqlConnection(Helper.GetConnection()))
    {
        con.Open();
        string query = @"SELECT UserID, TypeID FROM Users WHERE Email=@Email AND Password=@Password AND Status!=@Status";
    
        using (SqlCommand cmd = new SqlCommand(query, con))
        {
            cmd.Parameters.AddWithValue("@Email", record.Email);
            cmd.Parameters.AddWithValue("@Password", record.Password);
            cmd.Parameters.AddWithValue("@Status", "Suspended");
            using (SqlDataReader data = cmd.ExecuteReader())
            {
                if (data.HasRows)
                {
                    while (data.Read())
                    {
                        Session["userid"] = data["UserID"].ToString();
                        Session["typeid"] = data["TypeID"].ToString();
                    }
                    if ((string)Session["typeid"] == "Student")
                        sRedirecttoAction = "Profile";
                    if ((string)Session["typeid"] == "Tutor")
                        sRedirecttoAction = "TutorProfile";
                }
                else
                {
                    ViewBag.Error = "<div class = alert alert-danger col-lg-6'>Invalid Credentials.</div>";
                    return View();
                }
            }
        }
    }
    //return RedirectToAction here.
    return RedirectToAction(sRedirecttoAction);
    
    

  • 답변 # 4

    오류는 아래 코드에있는 것으로 보입니다. 귀하의 코드 부분을 수정했습니다.  시도해보고 작동하는지 확인

    if (data.HasRows)
                    {
                        while (data.Read())
                        {
                            Session["userid"] = data["UserID"].ToString();
                            Session["typeid"] = data["TypeID"].ToString();
                        }
                        //make sure there is no space between these two lines
                        if ((string)Session["typeid"] == "Student")
                          return RedirectToAction("Profile");
                        //make sure there is no space between these two lines
                        if ((string)Session["typeid"] == "Tutor")
                            return RedirectToAction("TutorProfile");
                        //###if those two if clauses are not met, there is no return after that.
                        return view(); //? or something else
                    }
    
    

관련 자료

  • 이전 python - Jupyter 노트북에서 커널을 시작하지 못했습니다
  • 다음 java - 그래프 데이터베이스에서 기간 (시간) 관계를 표현하는 방법 neo4j