C# 从ASP.NET呈现MVC视图

C# 从ASP.NET呈现MVC视图,c#,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我有两个独立的项目,一个在MVC中,另一个在ASP.NET中。 我在MVC中有一个函数,它可以渲染一个视图并将其转换成一个工作非常好的流 我在ASP.NET中使用此函数,并使用dll从ASP.NET中呈现MVC视图。 问题是razorViewEngine.FindView始终返回null 从ASP.NET呈现MVC视图的任何帮助都可以节省我的时间,也可以避免返工 public static Stream RenderView<T>(string controllerName, str

我有两个独立的项目,一个在MVC中,另一个在ASP.NET中。 我在MVC中有一个函数,它可以渲染一个视图并将其转换成一个工作非常好的流

我在ASP.NET中使用此函数,并使用dll从ASP.NET中呈现MVC视图。 问题是razorViewEngine.FindView始终返回null

从ASP.NET呈现MVC视图的任何帮助都可以节省我的时间,也可以避免返工

public static Stream RenderView<T>(string controllerName, string viewName, T model, Dictionary<string, object> viewData = null)
    {
        var context = HttpContext.Current;
        var contextBase = new HttpContextWrapper(context);
        var routeData = new RouteData();
        routeData.Values.Add("controller", controllerName);
        var controllerContext = new ControllerContext(contextBase, routeData, new EmptyController());
        var razorViewEngine = new RazorViewEngine();
        var razorViewResult = razorViewEngine.FindView(controllerContext, viewName, "", false);
        var writer = new StringWriter();
        var vdd = new ViewDataDictionary<T>(model);

        if (viewData != null)
        {
            foreach (var d in viewData)
                vdd.Add(d.Key, d.Value);
        }

        var viewContext = new ViewContext(controllerContext, razorViewResult.View, vdd, new TempDataDictionary(), writer);
        razorViewResult.View.Render(viewContext, writer);
        byte[] byteArray = Encoding.UTF8.GetBytes(writer.ToString());
        return new MemoryStream(byteArray);
    }
    class EmptyController : ControllerBase
    {
        protected override void ExecuteCore() { }
    }
publicstaticstreamrenderview(stringcontrollername,stringviewname,T模型,Dictionary viewData=null)
{
var context=HttpContext.Current;
var contextBase=新的HttpContextWrapper(上下文);
var routeData=新routeData();
routeData.Values.Add(“控制器”,controllerName);
var controllerContext=new controllerContext(contextBase、routeData、new EmptyController());
var razorViewEngine=新的razorViewEngine();
var razorViewResult=razorViewEngine.FindView(controllerContext,viewName,“,false);
var writer=新的StringWriter();
var vdd=新的ViewDataDictionary(模型);
如果(viewData!=null)
{
foreach(视图数据中的变量d)
vdd.Add(d.Key,d.Value);
}
var viewContext=newviewcontext(controllerContext,razorViewResult.View,vdd,new TempDataDictionary(),writer);
razorViewResult.View.Render(viewContext,writer);
byte[]byteArray=Encoding.UTF8.GetBytes(writer.ToString());
返回新的内存流(byteArray);
}
类EmptyController:ControllerBase
{
受保护的重写void ExecuteCore(){}
}

controllerName、viewName、model、viewData:)尝试在第三个参数中传递null。如果传递null,模型拥有所有数据,将呈现什么?第三个参数不是模型,它是主视图传递null,但没有进度