2012-01-09 3 views
4

혼란 스럽습니다. MVC 3와 함께 면도기를 사용하고 있으며 한 번의 작업에서 하나의보기에 문제가 있습니다.올바른 확장자를 찾지 못해도보기를 찾을 수 없습니다.

[HttpGet] 
[ActionName("Unsubscribe")] 
public ActionResult UnsubscribeGet(string maskedId) 
{  
    return View("Unsubscribe", maskedId); 
    } 

Unsubscribe.cshtml보기가 올바른보기 폴더에 있습니다. 이보기를 찾기 위해 시도 할 때 "/ 탈퇴/db94fddb", 액션 화재 후 다음과 같은 오류가 표시됩니다 다음 URL로 이동하면

경로는

routes.MapRoute(
       "", // Route name 
       "Unsubscribe/{maskedId}", // URL with parameters 
       new { controller = "Account", action = "Unsubscribe" }); 

입니다.

보기 '수신 거부'또는 해당 마스터를 찾을 수 없거나 검색 엔진이 검색된 위치를 지원하지 않습니다. 다음 위치가 검색되었습니다 :
~/조회/계정/Unsubscribe.aspx
~/조회/계정/Unsubscribe.ascx
~/조회/공유/Unsubscribe.aspx
~/조회/공유/Unsubscribe.ascx을
~/조회/계정/db94fddb.master
~/조회/공유는/db94fddb.master
~/조회/계정/db94fddb.cshtml
~/조회/계정/db94fddb.vbhtml
~/조회/Shared/db94fddb.cshtml
~/Views/Shared/db94fddb.vbhtml

완전히 해결하는 방법에 손실에서,이 내용은이보기에 무슨 일이 일어나고 db94fddb

를 찾을 때이 탈퇴를 찾는 경우 cshtml 연장을 보이지만하지 않는

알 수 있습니다.

** 수정 ** 내가 모델로 선택 System.String을 사용했다

그것을 발견

. 웬일인지 그것이 폭파의 원인이었습니다. 이 지금은 여전히 ​​이전에 작동하지 않았다 아무 생각이 왜 작동하지만

나는 @model UnsubscribeViewModel

[HttpGet] 
[ActionName("Unsubscribe")] 
public ActionResult UnsubscribeGet(string maskedId) 
{ 
    return View("Unsubscribe", new UnsubscribeViewModel { MaskedId = maskedId }); 
} 

에 교환. 빌드 할 때 컴파일 할 뷰를 설정 했으므로 컴파일러 오류가 없습니다.

나는 여기서 무슨 일이 일어나고 있는지 알고 싶습니다.

답변

11

View method의 과부하는 두 개의 문자열을 사용합니다. 대신 이런 식으로 호출하면

protected internal ViewResult View(
    string viewName, 
    string masterName 
) 

, 그것은 작동합니다 :

return View("Unsubscribe", (object) maskedId); 
+0

이조차나요 그것은 마스터 페이지 이름으로 그것을 해석 모델로 두 번째 문자열을 해석하지 않습니다 과부하를 고려하십시오. 4에서 명명 된 매개 변수에 대해 감사드립니다. 답변 해 주셔서 감사합니다! –

+0

이 답변을 주신 하나님 감사합니다. 이 문제는 나를 괴롭혔다. – 5arx

관련 문제