servicestack,C#,Asp.net Mvc 4,servicestack" /> servicestack,C#,Asp.net Mvc 4,servicestack" />

C# 空引用servicestack viewpage

C# 空引用servicestack viewpage,c#,asp.net-mvc-4,servicestack,C#,Asp.net Mvc 4,servicestack,我已经开始使用“RazorFormat”在服务栈的顶部构建一个无控制器的MVC应用程序。我已经成功地构建了两个页面。这些页面只是映射到一个返回简单单个文档对象的服务。这一切都很好。我构建了另一个视图,当我访问特定路由时,应该返回该视图。此服务返回IEnumerable。我能够逐步查看代码,以查看我的服务是否正确返回,但视图从未呈现,我看到一个NullReferenceException。在调试期间,我能够看到抛出的操作名是ResourceTemplateRequest,堆栈跟踪: 错误代码Nul

我已经开始使用“RazorFormat”在服务栈的顶部构建一个无控制器的MVC应用程序。我已经成功地构建了两个页面。这些页面只是映射到一个返回简单单个文档对象的服务。这一切都很好。我构建了另一个视图,当我访问特定路由时,应该返回该视图。此服务返回IEnumerable。我能够逐步查看代码,以查看我的服务是否正确返回,但视图从未呈现,我看到一个NullReferenceException。在调试期间,我能够看到抛出的操作名是
ResourceTemplateRequest
,堆栈跟踪:

错误代码NullReferenceException MessageObject引用未设置为 对象的实例。在ASP.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu ServiceStack.Razor.ViewPage
1.WriteTo(StreamWriter writer)位于
ServiceStack.Razor.Managers.razorpagesolver.ExecuteRazorPageWithLayout(IHttpRequest
httpReq,IHttpResponse httpRes,对象模型,IRazorView页面,函数
1 布局)在 ServiceStack.Razor.Managers.razorpagesolver.ExecuteRazorPageWithLayout(IHttpRequest httpReq,IHttpResponse httpRes,对象模型,IRazorView页面,Func
1
布局)在
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也做同样的事情。你能提供一个简单的例子来说明问题的症结所在吗?看起来错误就在布局文件中。它是不是期望在可视包里有什么东西?