处理_Partial Page的请求时发生未处理的异常 [英] An unhandled exception occurred while processing the request for _Partial Page

查看:85
本文介绍了处理_Partial Page的请求时发生未处理的异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

首页级视图命名为"Create.cshtml"

Top Page level View is named "Create.cshtml"

在该页面上,我需要放置多个使用剃须刀页面制作的_partialViews.cshtml:

On that page I need to place multiple _partialViews.cshtml which I have made using razor pages:

<div>
    <row>
         <div class="col-md-6">
            @await Html.PartialAsync("~/Views/Shared/_PartialDelegates")
         </div>
         <div class="col-md-6">
            @await Html.PartialAsync("~/Views/Shared/_PartialApps")
        </div>
    </row>
</div>

现在的问题是我正在尝试通过_PartialDelegates.cs调用_PartialDelegates.cshtml

Now the problem is I am trying to call _PartialDelegates.cshtml w/ _PartialDelegates.cs

_PartialDelegates.cshtml

_PartialDelegates.cshtml

@page
@model IMP.ECR.WEB.Views.Shared._PartialDelegatesModel
@{
}
<partial name="_PartialDelegatesView" model="Model.Avengers" />

哪个调用_PartialDelegates.cshtml.cs

Which calls _PartialDelegates.cshtml.cs

using Microsoft.AspNetCore.Mvc.RazorPages;

namespace IMP.ECR.WEB.Views.Shared
{
    public class _PartialDelegatesModel : PageModel
    {
    public List<string> Avengers = new List<string>();      


    public void OnGet()
    {
        Avengers.AddRange(new[] { "Spiderman", "Iron Man", "Dr. Stange", "The Hulk" });
    }
    }
  }
}

然后在_PartialDelegatesView.cshtml中,我具有以下内容:

Then in _PartialDelegatesView.cshtml I have the following:

@model List<string>
<div class="col-md-12">
    <h2>Avengers</h2>
    <table class="table table-boardered table-striped" style="width:100%">
        @foreach (var item in Model)
        {
            <tr>
                <td>@item</td>
            </tr>
        }
    </table>
</div>

但是,我不断收到未处理的异常---

But, I keep getting an unhandled exception ---

 An unhandled exception occurred while processing the request.
 NullReferenceException: Object reference not set to an instance of an 
 object.
 AspNetCore.Views_Shared__PartialDelegates.get_Model()

NullReferenceException: Object reference not set to an instance of an object.
AspNetCore.Views_Shared__PartialDelegates.get_Model()
AspNetCore.Views_Shared__PartialDelegates.ExecuteAsync() in _PartialDelegates.cshtml
+
<partial name="_PartialDelegatesView" model="Model.Avengers" />
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, bool invokeViewStarts)
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)
Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.RenderPartialCoreAsync(string partialViewName, object model, ViewDataDictionary viewData, TextWriter writer)
Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.PartialAsync(string partialViewName, object model, ViewDataDictionary viewData)
AspNetCore.Views_Sponsors_Create.ExecuteAsync() in Create.cshtml
+
            @await Html.PartialAsync("~/Views/Shared/_PartialDelegates.cshtml")
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, bool invokeViewStarts)
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, string contentType, Nullable<int> statusCode)
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ActionContext actionContext, IView view, ViewDataDictionary viewData, ITempDataDictionary tempData, string contentType, Nullable<int> statusCode)
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor.ExecuteAsync(ActionContext context, ViewResult result)
Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(ActionContext context)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeResultAsync(IActionResult result)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResultFilterAsync<TFilter, TFilterAsync>()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResultExecutedContext context)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.ResultNext<TFilter, TFilterAsync>(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeResultFilters()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

推荐答案

加载Razor页面作为局部视图似乎是不可能的,请参考查看组件.按照以下步骤创建一个 PartialDelegates ViewComponent,该组件可以执行您想要的相同操作.

Load Razor Pages as partial view seems to be impossible, refer to here. Razor pages cannot be used as a replacement for View Components.Follow below steps to create a PartialDelegates ViewComponent which could do the same thing as you want.

1.创建一个 ViewComponens 文件夹,并在该文件夹中添加一个 PartialDelegates.cs

1.Create a ViewComponens folder and add a PartialDelegates.cs class in the folder

public class PartialDelegates:ViewComponent
{
    public IViewComponentResult Invoke()
    {
        List<string> Avengers = new List<string>();
        Avengers.AddRange(new[] { "Spiderman", "Iron Man", "Dr. Stange", "The Hulk" });
        return View(Avengers);
    }

}

2.将 Default.cshtml 添加到路径/Views/Shared/Components/PartialDelegates/Default.cshtml (如果该文件夹不存在,则创建该文件夹)

2.Add Default.cshtml to the path /Views/Shared/Components/PartialDelegates/Default.cshtml(create the folder if it does not exist)

@model List<string>
<h1>Default</h1>
<partial name="_PartialDelegatesView" model="Model" />

3.在您的Create.cshtml中,调用视图组件

3.In your Create.cshtml, call the View Component

@await Component.InvokeAsync("PartialDelegates")

这篇关于处理_Partial Page的请求时发生未处理的异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆