#asp.net-mvc #razor #.net-5 #abp #visual-studio-2022
Вопрос:
Я получаю несколько из следующих ошибок после компиляции моего коммерческого решения на основе ABP.
Severity Code Description Project File Line Suppression State
Error CS0246 The type or namespace name 'IndexModel' could not be found (are you missing a using directive or an assembly reference?) ClientsLink.IdentityServer D:CenturyInternalMyProductMyProductaspnet-coresrcMyProduct.IdentityServerobjDebugnet5.0RazorPagesIndex.cshtml.g.cs 215 Active
Я не могу сказать, является ли это ошибкой в приложении Visual Studio 2022, компиляторе Roslyn или что-то связанное с Razor, но это прерывистое. Я думаю, что главное, на что следует обратить внимание, — это то, что Index.cshtml.g.cs
файла нет в моем решении. Это какой-то автоматически созданный временный файл, созданный при сборке (обратите внимание на путь).
Вот содержимое файла:
#pragma checksum "D:CenturyInternalMyProductMyProductaspnet-coresrcMyProduct.IdentityServerPagesIndex.cshtml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "f43e9fc593b31efe4f68ec9898517ecb634d6927"
// <auto-generated/>
#pragma warning disable 1591
[assembly: global::Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemAttribute(typeof(AspNetCore.Pages_Index), @"mvc.1.0.razor-page", @"/Pages/Index.cshtml")]
namespace AspNetCore
{
#line hidden
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
#nullable restore
#line 2 "D:CenturyInternalMyProductMyProductaspnet-coresrcMyProduct.IdentityServerPagesIndex.cshtml"
using MyProduct.Localization;
#line default
#line hidden
#nullable disable
#nullable restore
#line 3 "D:CenturyInternalMyProductMyProductaspnet-coresrcMyProduct.IdentityServerPagesIndex.cshtml"
using Microsoft.AspNetCore.Mvc.Localization;
#line default
#line hidden
#nullable disable
#nullable restore
#line 4 "D:CenturyInternalMyProductMyProductaspnet-coresrcMyProduct.IdentityServerPagesIndex.cshtml"
using Volo.Abp.Users;
#line default
#line hidden
#nullable disable
[global::Microsoft.AspNetCore.Razor.Hosting.RazorSourceChecksumAttribute(@"SHA1", @"f43e9fc593b31efe4f68ec9898517ecb634d6927", @"/Pages/Index.cshtml")]
[global::Microsoft.AspNetCore.Razor.Hosting.RazorSourceChecksumAttribute(@"SHA1", @"25152d795852518cc499282e563bc297efeed2a9", @"/Pages/_ViewImports.cshtml")]
public class Pages_Index : global::Microsoft.AspNetCore.Mvc.RazorPages.Page
{
private static readonly global::Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute __tagHelperAttribute_0 = new global::Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute("asp-controller", "Logout", global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
private static readonly global::Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute __tagHelperAttribute_1 = new global::Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute("asp-action", "Index", global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
private static readonly global::Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute __tagHelperAttribute_2 = new global::Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute("asp-area", "Account", global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
private static readonly global::Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute __tagHelperAttribute_3 = new global::Microsoft.AspNetCore.Razor.TagHelpers.TagHelperAttribute("class", new global::Microsoft.AspNetCore.Html.HtmlString("text-center"), global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
#line hidden
#pragma warning disable 0649
private global::Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext __tagHelperExecutionContext;
#pragma warning restore 0649
private global::Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner __tagHelperRunner = new global::Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner();
#pragma warning disable 0169
private string __tagHelperStringValueBuffer;
#pragma warning restore 0169
private global::Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperScopeManager __backed__tagHelperScopeManager = null;
private global::Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperScopeManager __tagHelperScopeManager
{
get
{
if (__backed__tagHelperScopeManager == null)
{
__backed__tagHelperScopeManager = new global::Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperScopeManager(StartTagHelperWritingScope, EndTagHelperWritingScope);
}
return __backed__tagHelperScopeManager;
}
}
private global::Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Grid.AbpRowTagHelper __Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Grid_AbpRowTagHelper;
private global::Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Grid.AbpColumnTagHelper __Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Grid_AbpColumnTagHelper;
private global::Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper;
private global::Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button.AbpLinkButtonTagHelper __Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Button_AbpLinkButtonTagHelper;
#pragma warning disable 1998
public async override global::System.Threading.Tasks.Task ExecuteAsync()
{
WriteLiteral("<div>n ");
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("abp-row", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "f43e9fc593b31efe4f68ec9898517ecb634d69275150", async() => {
WriteLiteral("n ");
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("abp-column", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "f43e9fc593b31efe4f68ec9898517ecb634d69275417", async() => {
WriteLiteral("n <i class="fa fa-user d-block" style="color: #12b900; font-size: 10em;"></i>n");
WriteLiteral(" ");
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("a", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "f43e9fc593b31efe4f68ec9898517ecb634d69275831", async() => {
#nullable restore
#line (13,100)-(13,111) 6 "D:CenturyInternalMyProductMyProductaspnet-coresrcMyProduct.IdentityServerPagesIndex.cshtml"
Write(L["Logout"]);
#line default
#line hidden
#nullable disable
}
);
__Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper = CreateTagHelper<global::Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper>();
__tagHelperExecutionContext.Add(__Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper);
__Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Button_AbpLinkButtonTagHelper = CreateTagHelper<global::Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button.AbpLinkButtonTagHelper>();
__tagHelperExecutionContext.Add(__Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Button_AbpLinkButtonTagHelper);
#nullable restore
#line 13 "D:CenturyInternalMyProductMyProductaspnet-coresrcMyProduct.IdentityServerPagesIndex.cshtml"
__Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Button_AbpLinkButtonTagHelper.ButtonType = global::Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button.AbpButtonType.Primary;
#line default
#line hidden
#nullable disable
__tagHelperExecutionContext.AddTagHelperAttribute("abp-button", __Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Button_AbpLinkButtonTagHelper.ButtonType, global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
__Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Controller = (string)__tagHelperAttribute_0.Value;
__tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_0);
__Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Action = (string)__tagHelperAttribute_1.Value;
__tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_1);
__Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Area = (string)__tagHelperAttribute_2.Value;
__tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_2);
await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
if (!__tagHelperExecutionContext.Output.IsContentModified)
{
await __tagHelperExecutionContext.SetOutputContentAsync();
}
Write(__tagHelperExecutionContext.Output);
__tagHelperExecutionContext = __tagHelperScopeManager.End();
WriteLiteral("n ");
}
);
__Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Grid_AbpColumnTagHelper = CreateTagHelper<global::Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Grid.AbpColumnTagHelper>();
__tagHelperExecutionContext.Add(__Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Grid_AbpColumnTagHelper);
#nullable restore
#line 10 "D:CenturyInternalMyProductMyProductaspnet-coresrcMyProduct.IdentityServerPagesIndex.cshtml"
__Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Grid_AbpColumnTagHelper.SizeMd = global::Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Grid.ColumnSize._3;
#line default
#line hidden
#nullable disable
__tagHelperExecutionContext.AddTagHelperAttribute("size-md", __Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Grid_AbpColumnTagHelper.SizeMd, global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
__tagHelperExecutionContext.AddHtmlAttribute(__tagHelperAttribute_3);
await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
if (!__tagHelperExecutionContext.Output.IsContentModified)
{
await __tagHelperExecutionContext.SetOutputContentAsync();
}
Write(__tagHelperExecutionContext.Output);
__tagHelperExecutionContext = __tagHelperScopeManager.End();
WriteLiteral("n ");
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("abp-column", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "f43e9fc593b31efe4f68ec9898517ecb634d692710199", async() => {
WriteLiteral("n <h2>");
#nullable restore
#line (16,18)-(16,38) 6 "D:CenturyInternalMyProductMyProductaspnet-coresrcMyProduct.IdentityServerPagesIndex.cshtml"
Write(CurrentUser.UserName);
#line default
#line hidden
#nullable disable
WriteLiteral("</h2>n <h5 class="text-muted">");
#nullable restore
#line (17,37)-(17,54) 6 "D:CenturyInternalMyProductMyProductaspnet-coresrcMyProduct.IdentityServerPagesIndex.cshtml"
Write(CurrentUser.Email);
#line default
#line hidden
#nullable disable
WriteLiteral("</h5>n <div>n <strong>Roles</strong>: ");
#nullable restore
#line (19,42)-(19,78) 6 "D:CenturyInternalMyProductMyProductaspnet-coresrcMyProduct.IdentityServerPagesIndex.cshtml"
Write(CurrentUser.Roles.JoinAsString(", "));
#line default
#line hidden
#nullable disable
WriteLiteral("n <br/>n <strong>Claims</strong>: <br/>n ");
#nullable restore
#line (22,18)-(22,114) 6 "D:CenturyInternalMyProductMyProductaspnet-coresrcMyProduct.IdentityServerPagesIndex.cshtml"
Write(Html.Raw(CurrentUser.GetAllClaims().Select(c => $"{c.Type}={c.Value}").JoinAsString(" <br /> ")));
#line default
#line hidden
#nullable disable
WriteLiteral("n </div>n ");
}
);
__Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Grid_AbpColumnTagHelper = CreateTagHelper<global::Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Grid.AbpColumnTagHelper>();
__tagHelperExecutionContext.Add(__Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Grid_AbpColumnTagHelper);
#nullable restore
#line 15 "D:CenturyInternalMyProductMyProductaspnet-coresrcMyProduct.IdentityServerPagesIndex.cshtml"
__Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Grid_AbpColumnTagHelper.SizeMd = global::Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Grid.ColumnSize._9;
#line default
#line hidden
#nullable disable
__tagHelperExecutionContext.AddTagHelperAttribute("size-md", __Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Grid_AbpColumnTagHelper.SizeMd, global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
if (!__tagHelperExecutionContext.Output.IsContentModified)
{
await __tagHelperExecutionContext.SetOutputContentAsync();
}
Write(__tagHelperExecutionContext.Output);
__tagHelperExecutionContext = __tagHelperScopeManager.End();
WriteLiteral("n ");
}
);
__Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Grid_AbpRowTagHelper = CreateTagHelper<global::Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Grid.AbpRowTagHelper>();
__tagHelperExecutionContext.Add(__Volo_Abp_AspNetCore_Mvc_UI_Bootstrap_TagHelpers_Grid_AbpRowTagHelper);
await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
if (!__tagHelperExecutionContext.Output.IsContentModified)
{
await __tagHelperExecutionContext.SetOutputContentAsync();
}
Write(__tagHelperExecutionContext.Output);
__tagHelperExecutionContext = __tagHelperScopeManager.End();
WriteLiteral("n</div>");
}
#pragma warning restore 1998
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public ICurrentUser CurrentUser { get; private set; }
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public IHtmlLocalizer<MyProductResource> L { get; private set; }
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public global::Microsoft.AspNetCore.Mvc.ViewFeatures.IModelExpressionProvider ModelExpressionProvider { get; private set; }
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public global::Microsoft.AspNetCore.Mvc.IUrlHelper Url { get; private set; }
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public global::Microsoft.AspNetCore.Mvc.IViewComponentHelper Component { get; private set; }
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public global::Microsoft.AspNetCore.Mvc.Rendering.IJsonHelper Json { get; private set; }
[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]
public global::Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper<IndexModel> Html { get; private set; }
public global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<IndexModel> ViewData => (global::Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary<IndexModel>)PageContext?.ViewData;
public IndexModel Model => ViewData.Model;
}
}
#pragma warning restore 1591
И вот index.cshtml
файл, который создает этот файл:
@page
@using MyProduct.Localization
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Abp.Users
@model IndexModel
@inject IHtmlLocalizer<MyProductResource> L
@inject ICurrentUser CurrentUser
<div>
<abp-row>
<abp-column size-md="_3" class="text-center">
<i class="fa fa-user d-block" style="color: #12b900; font-size: 10em;"></i>
@* ReSharper disable once Mvc.ControllerNotResolved *@
<a abp-button="Primary" asp-controller="Logout" asp-action="Index" asp-area="Account">@L["Logout"]</a>
</abp-column>
<abp-column size-md="_9">
<h2>@CurrentUser.UserName</h2>
<h5 class="text-muted">@CurrentUser.Email</h5>
<div>
<strong>Roles</strong>: @CurrentUser.Roles.JoinAsString(", ")
<br/>
<strong>Claims</strong>: <br/>
@Html.Raw(CurrentUser.GetAllClaims().Select(c => $"{c.Type}={c.Value}").JoinAsString(" <br /> "))
</div>
</abp-column>
</abp-row>
</div>
И вот связанный index.cshtml.cs
файл:
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.UI.RazorPages;
namespace MyProduct.Pages
{
public class IndexModel : AbpPageModel
{
public ActionResult OnGet()
{
if (!CurrentUser.IsAuthenticated)
{
return Redirect("~/Account/Login");
}
return Page();
}
}
}
Еще одна странная вещь заключается в том, что каждый раз, когда я дважды щелкаю на ошибке, чтобы открыть Index.cshtml.g.cs
файл, Visual Studio блокируется, и мне приходится отключить процесс и перезапустить его.
Если вы знакомы с MVC или с платформой ABP, вы должны знать, что эта же проблема возникает для каждого из моих файлов cshtml.
Как я могу устранить эти ошибки? Спасибо.
Комментарии:
1. С тех пор как я опубликовал это, я обнаружил, что файлы cshtml, которые я скопировал из образца EasyCrm, не полностью указали пространство имен в объявлениях @ model. Почему это сработало в решении Volosoft, я понятия не имею. Я исправил все объявления, и ошибки исчезли. Однако файл Index.cshtml в корневой папке Страниц продолжает генерировать эту ошибку, даже несмотря на то, что я исправил объявление @ model. Что это дает? Я захожу и удаляю папки OBJ и BIN перед запуском сборки, но продолжаю получать сообщение об ошибке. Пожалуйста, посоветуйте.
2. Я нашел его. Это было в другом проекте — MyProduct. Сервер идентификации. Теперь я полагаю, что функция кода очистки, возможно, удалила директивы @ using из этих файлов.