このメソッドは、最後のparam masterNameにnullを渡すとうまくいきます。私のクラスでの私のビューの設定は、RazorViewEngineの作業から派生しています。好奇心からmasterNameパラメータが何のために使われていますか?私はまず、layout.cshtmlのためだと思ったかもしれません。レイアウトを渡すと、例外がスローされます。これがどのように使われるべきか、それは何を探していますか? (ほとんどLOL)ViewEngines.Engines.FindViewメソッドとmasterNameパラメータについての質問
カスタムビューエンジン
public class CustomRazorViewEngine : RazorViewEngine
{
private readonly string[] NewViewFormats = new[]
{
"~/Views/Messaging/{0}.cshtml"
};
public CustomRazorViewEngine()
{
base.ViewLocationFormats = base.ViewLocationFormats.Union(NewViewFormats).ToArray();
}
}
public string RenderViewToString(string viewName, object model, ControllerContext controllerContext,
string masterName)
{
if (string.IsNullOrEmpty(viewName))
viewName = controllerContext.RouteData.GetRequiredString("action");
controllerContext.Controller.ViewData.Model = model;
using (var stringWriter = new StringWriter())
{
ViewEngineResult viewEngineResult = ViewEngines.Engines.FindView(controllerContext, viewName, masterName);
var viewContext = new ViewContext(controllerContext, viewEngineResult.View,
controllerContext.Controller.ViewData,
controllerContext.Controller.TempData,
stringWriter);
viewEngineResult.View.Render(viewContext, stringWriter);
return stringWriter.GetStringBuilder().ToString();
}
}
[msdn](http://msdn.microsoft.com/en-us/library/system.web.mvc.viewenginecollection .findview.aspx)FindControllerは、controllerContextがnullまたはviewNameがnullまたは空の場合にのみ、例外をスローします。 –
ArgumentNullException。 masterNameパラメータがnull以外の場合、追加する可能性のあるCustomView Engineの検索場所はほとんどカスタムではなく、無視されてビューを見つけることができません。 – CrazyCoderz
ViewEngineクラスを表示するために上記のコードを更新しました。 – CrazyCoderz