ActionFilterAttribute를 사용하여 (쿼리 문자열의 "TargetCode"를 기반으로) 데이터베이스에서 masterpage 내용을로드하려고했습니다.)ViewData in ActionFilterAttribute - 객체 참조가 객체의 인스턴스로 설정되지 않았습니다.
public override void OnActionExecuting(ActionExecutingContext filterContext)
{ HomeRepository의 시간 = 새로운 HomeRepository (; 그러나, 나는 데이터베이스에서 반환 된 데이터에을 ViewData를 설정하는 문제가있어, 여기에 코드입니다
var result = filterContext.Result as ViewResult;
string TargetCode = string.Empty;
Controller control = filterContext.Controller as Controller;
System.Collections.Specialized.NameValueCollection query = filterContext.HttpContext.Request.QueryString;
if (query.Count > 0 && query["TargetCode"] != null && query["TargetCode"].ToString() != "")
TargetCode = query["TargetCode"].ToString();
if (string.IsNullOrEmpty(TargetCode))
if (control != null)
{
filterContext.Result = new RedirectToRouteResult(new System.Web.Routing.RouteValueDictionary(new { controller = "Home", action = "NoCode" }));
return;
}
if (!hr.CheckTargetCodeExists(TargetCode))
{
if (control != null)
{
filterContext.Result = new RedirectToRouteResult(new System.Web.Routing.RouteValueDictionary(new { controller = "Home", action = "InvalidCode" }));
return;
}
}
// IF CODE IS VALID, GET THE MASTERPAGE CONTENT AND STORE IT IN VIEWDATA
var ThemeData = hr.GetMasterPageContent(TargetCode);
result.ViewData["ThemeData"] = ThemeData;
은}
는모든 마지막 줄 (result.ViewData [ "ThemeData"] = ThemeData)을 제외하고 예상대로 작동하면됩니다 내가 코드를 디버깅 할 때
, 그것은 ThemeData가하는 것을 보여줍니다 데이터베이스에서 가져온 데이터가 있지만 결과로 설정할 수 없습니다 .ViewData [ "ThemeData"]. 오류는 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."입니다. 그 줄에.
도움을 주시면 감사하겠습니다. 대단히 감사합니다.
"result"는 실제로는 null이며 ThemeData는 아닙니다. 누구든지 결과 (ViewResult)를 렌더링하는 방법을 알고 있습니까? –