C# 空引用servicestack viewpage
我已经开始使用“RazorFormat”在服务栈的顶部构建一个无控制器的MVC应用程序。我已经成功地构建了两个页面。这些页面只是映射到一个返回简单单个文档对象的服务。这一切都很好。我构建了另一个视图,当我访问特定路由时,应该返回该视图。此服务返回IEnumerable。我能够逐步查看代码,以查看我的服务是否正确返回,但视图从未呈现,我看到一个NullReferenceException。在调试期间,我能够看到抛出的操作名是C# 空引用servicestack viewpage,c#,asp.net-mvc-4,
servicestack,C#,Asp.net Mvc 4,
servicestack,我已经开始使用“RazorFormat”在服务栈的顶部构建一个无控制器的MVC应用程序。我已经成功地构建了两个页面。这些页面只是映射到一个返回简单单个文档对象的服务。这一切都很好。我构建了另一个视图,当我访问特定路由时,应该返回该视图。此服务返回IEnumerable。我能够逐步查看代码,以查看我的服务是否正确返回,但视图从未呈现,我看到一个NullReferenceException。在调试期间,我能够看到抛出的操作名是ResourceTemplateRequest,堆栈跟踪: 错误代码Nul
ResourceTemplateRequest
,堆栈跟踪:
错误代码NullReferenceException MessageObject引用未设置为
对象的实例。在ASP.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
ServiceStack.Razor.ViewPage1.WriteTo(StreamWriter writer)位于
ServiceStack.Razor.Managers.razorpagesolver.ExecuteRazorPageWithLayout(IHttpRequest
httpReq,IHttpResponse httpRes,对象模型,IRazorView页面,函数
1
布局)在
ServiceStack.Razor.Managers.razorpagesolver.ExecuteRazorPageWithLayout(IHttpRequest
httpReq,IHttpResponse httpRes,对象模型,IRazorView页面,Func1
布局)在
ServiceStack.Razor.Managers.razorpagesolver.ResolveAndExecuteRazorPage(IHttpRequest
httpReq,IHttpResponse httpRes,对象模型,RazorPage RazorPage)位于
ServiceStack.Razor.Managers.razorpagesolver.ProcessRequest(IHttpRequest
httpReq、IHttpResponse httpRes、对象dto)在
ServiceStack.WebHost.Endpoints.Formats.HtmlFormat.c__DisplayClass1.b__0(IViewEngine
x) 在System.Linq.Enumerable.Any[t源](IEnumerable
1源,Func`2
谓词)at
ServiceStack.WebHost.Endpoints.Formats.HtmlFormat.SerializeToStream(IRequestContext
requestContext、对象响应、IHTTPreponse(HTTP)位于
ServiceStack.WebHost.Endpoints.Extensions.HttpResponseExtensions.WriteToResponse(IHttpResponse
响应、对象结果、ResponseSerializerDelegate默认操作,
IRequestContext序列化RCTX,字节[]体前缀,字节[]体后缀)
但我想不出如何修复它。我的服务使用[DefaultView(“ResourceTemplate”)]
属性进行修饰。有什么想法吗
即使我把我的观点都说出来,我也会得到一个例外。这里有一些代码
服务
[Authenticate]
public class ResourceTemplateService : Service
{
[DefaultView("ResourceTemplate")]
public ResourceTemplateResponse Get(ResourceTemplateRequest request)
{
var filter = factory.SetUp()
.WithTopN(Paging.GetTopN(request))
.WithGlobalPath(request.NodeAliasPath.StripChannel())
.Value;
var documents = repository.GetDocumentsByPath(filter).ToList();
var currentDocument = repository.GetDocumentByNodeAliasPath(request.NodeAliasPath);
var page = Paging.GetPage(documents, request);
if (documents.None())
throw HttpError.NotFound(string.Format("No children found for path {0}", request.NodeAliasPath));
return new ResourceTemplateResponse
{
Count = documents.Count(),
CurrentDocument = currentDocument,
Documents = page,
CurrentNodeAliasPath = request.NodeAliasPath
};
}
}
Request
[Route("/resource/{NodeAliasPath*}")]
public class ResourceTemplateRequest : DocumentCollectionRequest, IReturn<ResourceTemplateResponse>
{
public ResourceTemplateRequest()
{
View = "ResourceTemplate";
//Set base call properties
}
}
View
@using Zoo.Optus.YesCentral.Mobile.Model
@using Zoo.Optus.YesCentral.Web.Factories
@inherits ServiceStack.Razor.ViewPage<ResourceTemplateResponse>
@{
Layout = "_Layout";
ActivityFactory.LogPageVisit(Model.CurrentDocument.DocumentName, Model.CurrentDocument.NodeId, true);
}
@foreach (var document in @Model.Documents)
{
@document.DocumentName.ToMvcHtmlString()
}
[验证]
公共类ResourceTemplateService:服务
{
[默认视图(“资源模板”)]
公共ResourceTemplateResponse Get(ResourceTemplateRequest请求)
{
var filter=factory.SetUp()
.WithTopN(Paging.GetTopN(请求))
.WithGlobalPath(request.NodeAliasPath.StripChannel())
价值
var documents=repository.GetDocumentsByPath(filter.ToList();
var currentDocument=repository.GetDocumentByNodeAliasPath(request.NodeAliasPath);
var page=Paging.GetPage(文档、请求);
if(documents.None())
抛出HttpError.NotFound(string.Format(“未找到路径{0}”、request.NodeAliasPath的子项”);
返回新的ResourceTemplateResponse
{
Count=文档。Count(),
CurrentDocument=CurrentDocument,
文件=第页,
CurrentNodeAliasPath=request.NodeAliasPath
};
}
}
要求
[路由(“/resource/{NodeAliasPath*}”)]
公共类ResourceTemplateRequest:DocumentCollectionRequest,IReturn
{
公共资源TemplateRequest()
{
View=“ResourceTemplate”;
//设置基本调用属性
}
}
看法
@使用Zoo.Optus.YesCentral.Mobile.Model
@使用Zoo.Optus.YesCentral.Web.Factories
@继承ServiceStack.Razor.ViewPage
@{
布局=“_布局”;
ActivityFactory.LogPageVisit(Model.CurrentDocument.DocumentName,Model.CurrentDocument.NodeId,true);
}
@foreach(var文档在@Model.Documents中)
{
@document.DocumentName.ToMvcHtmlString()
}
猜测。。。视图引用的null属性值在呈现之前是未知的。MVC也做同样的事情。你能提供一个简单的例子来说明问题的症结所在吗?看起来错误就在布局文件中。它是不是期望在可视包里有什么东西?