조건이 충족 될 경우 다른 뷰를 반환하려고합니다. 액션에서 뷰로 전달 된 모델을 유지하려고합니다.다른 뷰를 반환하는 방법, OnActionExecuting의 PresMreviewModel
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var subAction = filterContext.RequestContext.RouteData.Values["subaction"].ToString();
var action = filterContext.RequestContext.RouteData.Values["action"].ToString();
if (!string.IsNullOrEmpty(subAction))
{
var view = (ViewResultBase) (filterContext.Result);
filterContext.Result = View(action + subAction, view.ViewData.Model);
}
base.OnActionExecuting(filterContext);
}
이렇게하면 "Object reference not set to an instance of an object.
"이됩니다. 분명히 모델이 설정되지 않았습니까?
내가 이렇게하는 이유는 가능한 한 간단하게보기의 이름을 유지하기 위해서입니다. 내 URL은 /Global/Modules/Admin/Users/Create
과 같습니다. 그러면 뷰 "UsersCreate"가 반환됩니다. 어떤 작품. 그러나 모델은 비어 있거나 널입니다!
UPDATE 사실
. 그것은 단지 나를 쳤다. 문제가 해결되었습니다. 왜냐하면 나는 단지보기 만 반환하기 때문입니다. 액션은 절대로 실행되지 않습니다. 사용자 액션은 실행되지만 뷰 UsersCreate를 반환합니다. 실제로 리디렉션하지 않고 어떻게 RedirectToAction을 할 수 있습니까?
그러나보기를 변경하기에는 너무 늦었습니다. 나는'사전에 전달 된 모델 항목은 [..] 형이다. '를 얻는다. 전달 된 데이터는 사용자 목록입니다. 뷰 모델 클래스'UsersCreate'를 전달합니다. 사용자 목록은'Users'보기의 모델입니다. – Kordonme
사실. 그것은 단지 나를 쳤다. 문제가 해결되었습니다. 왜냐하면 나는 단지보기 만 반환하기 때문입니다. 액션은 결코 실행되지 않습니다. 'Users' 액션은 실행되지만'UsersCreate' 뷰를 리턴합니다. 실제로 리다이렉트하지 않고 어떻게'RedirectToAction' 일을 할 수 있습니까? – Kordonme