2014-10-14 2 views
13

MVC 컨트롤러에서 SendMail 메서드가 있습니다.이 메서드는 다른 메서드 ValidateLogin을 호출합니다. 이 유효성 검사 로그인의 서명입니다 : 나는 센드 메일에서 ValidateLogin를 호출 할 때 컨트롤러가보기 센드를 검색하려고하기 때문에특정 뷰 (컨트롤러 이름 아님)를 사용하여 ActionResult를 반환하는 방법

private ActionResult ValidateLogin(Models.ResetPassword model) 

는,이 예외가 나타납니다,하지만 난 ResetPassword보기를로드 할 :

Global Error - The view 'SendMail' or its master was not found or no view engine supports the searched locations. The following locations were searched: ... 

public ActionResult SendMail(string login) 
{ 
     return ValidateLogin(login); 
} 

어떻게 return 문에보기를 재정의 할 수

이 센드 메일의 코드? 사전

답변

4

마지막으로 이것은 해결책이었습니다

return View("ResetPassword", new ResetPassword 
      { 
       fields= fields 
      }); 
+0

약간의 추가 사항 : "ResetPassword.cshtml"을 "~/Views/ /"디렉토리에 위치시킬 수 있어야합니다. 여기서 은 액세스 한 컨트롤러 클래스의 이름과 같습니다. 예 : TestController >> "~/Views/Test/ResetPassword, cshtml"이 로딩을 위해 액세스됩니다. 그렇지 않으면로드 할 내용이 없을 경우 여기에서 고생하지 마십시오. ;) – SiL3NC3

7

View 방법

감사는 viewName에 문자열을 얻을 과부하가 있습니다. 때로는 string을 모델로 전달하려고하며 asp.net 프레임 워크는 값이 string 인보기를 찾으려고 혼란스럽게 만듭니다. 이런 식으로 뭔가를 시도 :

public ActionResult SendMail(string login) 
{ 
    this.Model = login; // set the model 
    return View("ValidateLogin"); // reponse the ValidateLogin view 
} 
0

당신은 명시 적으로 자신의 위치를 ​​가리키는 의해을 구체적으로보기으로 가리킬 직접 수있는이

return View("viewnamehere"); 
27
private ActionResult SendMail(string login) 
{ 
      return View("~/Views/SpecificView.cshtml") 
} 

같은 이름으로 뷰를 반환 할 수 있습니다 ..

관련 문제