C# html.hiddenfor在将控制器外部的视图呈现为字符串时出错
我需要在控制器外部进行服务器端页面渲染(无需请求)(我想在控制器外部渲染视图)。 为此,我需要一个假的C# html.hiddenfor在将控制器外部的视图呈现为字符串时出错,c#,asp.net-mvc,razor,view,render,C#,Asp.net Mvc,Razor,View,Render,我需要在控制器外部进行服务器端页面渲染(无需请求)(我想在控制器外部渲染视图)。 为此,我需要一个假的HttpRequest来创建ControllerContext,这样我就可以使用razor.render()渲染视图并返回 stringWriter.ToString()使用信号集线器发送到客户端 因此,我使用此代码将partialview呈现为字符串 public class FakeController : Controller { } HttpRequest httpRequest
HttpRequest
来创建ControllerContext
,这样我就可以使用razor.render()渲染视图并返回
stringWriter.ToString()
使用信号集线器发送到客户端
因此,我使用此代码将partialview呈现为字符串
public class FakeController : Controller { }
HttpRequest httpRequest = new HttpRequest("", new UriBuilder("http", "localhost", 10654, "/" + "SomeController/SomeAction").Uri.ToString(), "");
var routeData = new RouteData();
routeData.Values.Add("Controller", "SomeController");
routeData.Values.Add("Action", "SomeAction");
StringWriter stringWriter = new StringWriter();
HttpResponse httpResponse = new HttpResponse(stringWriter);
HttpContext httpContextMock = new HttpContext(httpRequest, httpResponse);
var _contextWrapper = new HttpContextWrapper(httpContextMock);
var controllerContext = new ControllerContext(new RequestContext(_contextWrapper , routeData), new FakeController());
string filePath = "~/Areas/Site/Views/Shared/SomePartialView.cshtml";
var razor = new RazorView(controllerContext, filePath, null, false, null);
razor.Render(new ViewContext(controllerContext, razor, new ViewDataDictionary(model), new TempDataDictionary(), stringWriter), stringWriter);
return stringWriter.ToString();
当代码试图呈现@Html.HiddenFor(m=>m.property)
我犯了错误强>
source : System.Web.WebPages
error : Object reference not set to an instance of an object
但奇怪的是,我可以得到@Model.property
值(我的意思是它不是空的)和其他模型属性(似乎只有@Html.HiddenFor或@Html.HiddenFor是问题所在)。Model.property
中有什么?你试着给它一个值Html.HiddenFor(m=>m.property,”代码>,这不应该是问题,但请不要尝试lose@jamiedanqmodel.property是一个字符串value@Munzer没有什么改变。。。