을;
@Html.Action("Index", "Home", new { Area = "HelloWorld" })
더미 컨트롤러가 필요합니다 :
public class WebFormController : Controller { }
우리는 다음 ControllerContext을 얻을 수있는 대답은 표준 Html.Action 확장 방법을 사용하여 필요한 영역을 호출하는 부분보기를 할 것 같다 우리의 더미를 사용하여 거기에서 우리는 부분보기를 얻을하고 렌더링 할 수 있습니다
public class WebFormMvcUtil
{
public static string RenderPartial(string partialName, object model)
{
var httpContextWrapper = new HttpContextWrapper(HttpContext.Current);
var routeData = new RouteData();
routeData.Values.Add("controller", "WebFormController");
var controllerContext = new ControllerContext(new RequestContext(httpContextWrapper, routeData),
new WebFormController());
IView view = ViewEngines.Engines.FindPartialView(controllerContext, partialName).View;
ViewContext viewContext;
var stringBuilder = new StringBuilder();
using (var stringWriter = new StringWriter(stringBuilder))
{
viewContext = new ViewContext(controllerContext, view, new ViewDataDictionary {Model = model}, new TempDataDictionary(), stringWriter);
view.Render(viewContext, viewContext.Writer);
}
return stringBuilder.ToString();
}
}
이 간단한
을 배치 할 수있는 아래로 비등
<%= WebFormMvcUtil.RenderPartial("_Area", null) %>
WebForms 페이지에서 필수 영역이 렌더링됩니다.
멋진 아이디어. 정적 RenderPartial 메서드를 속성 Area 및 Model이있는 웹 서버 컨트롤에 배치하면 더 이상 aspx 페이지에 추한 코드 조각이 필요하지 않습니다. – slfan
@Ed - 어떻게 webforms 어플리케이션에'Areas'를 추가 했습니까? 나는 비슷한 상황에 처해 있으며 어떤 통찰력도 인정됩니다. – Nick