小编Ehs*_*jad的帖子

Html.Partial不渲染局部视图

我在视图中有以下代码:

@if (SiteSession.SubPageHelper.DisplayType == DisplayType.List)
{
    Html.Partial("_SubLandingPage_List");
}
else
{
    Html.Partial("_SubLandingPage_Grid");
}
Run Code Online (Sandbox Code Playgroud)

在部分内容中我只有一个像这样的foreach循环:

@foreach (Product product in SiteSession.SubPageHelper.PagedProducts)
{
      some html code here
}
Run Code Online (Sandbox Code Playgroud)

PagedProducts从做了.Take()产品缓存列表

现在上面的代码不会显示我的分页产品,但是如果我更改了部分以包含at符号,则删除分号:

@Html.Partial("_SubLandingPage_Grid")
Run Code Online (Sandbox Code Playgroud)

它会正确显示产品.任何人都可以告诉我这两个版本之间的区别是因为我花了很长时间才弄清楚产品没有显示的原因

asp.net-mvc-partialview razor asp.net-mvc-4

4
推荐指数
1
解决办法
1万
查看次数

C#Razor名称在当前上下文中不存在

我知道我在这里一定很愚蠢,但是我无法弄清楚为什么这段代码不起作用。我是Razor的新手,所以请放轻松。

我在标记中包含以下代码:(我将其简化为尽可能简单,同时仍然重现问题,以便希望可以更轻松地诊断问题)

string testVar = "test";
@testVar
Run Code Online (Sandbox Code Playgroud)

它返回以下内容:

error CS0103: The name 'testVar' does not exist in the current context
Run Code Online (Sandbox Code Playgroud)

我尝试为变量使用不同的名称,尝试使用“ var”而不是“ string”进行声明,尝试为它分配各种不同的值,尝试将变量括在方括号中一样@(testVar),但问题仍然存在。这非常令人沮丧,因为在我的代码的另一部分中,

string prop = @p.Name + " (" + @p.PropertyType + ") - " + @p.GetValue(@page, null).ToString() + "\r\n";
@prop
Run Code Online (Sandbox Code Playgroud)

效果很好。

我想不出是什么原因造成的,它开始让我感到沮丧。

谢谢,

M

c# asp.net-mvc razor

4
推荐指数
1
解决办法
8092
查看次数

为什么Int32.ToString()发出调用指令而不是callvirt?

对于以下代码段:

struct Test
{
    public override string ToString()
    {
        return "";
    }
}

public class Program
{
    public static void Main()
    {
        Test a = new Test();
        a.ToString();
        Int32 b = 5;
        b.ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器发出以下IL:

  .locals init ([0] valuetype ConsoleApplication2.Test a,
           [1] int32 b)
  IL_0000:  nop
  IL_0001:  ldloca.s   a
  IL_0003:  initobj    ConsoleApplication2.Test
  IL_0009:  ldloca.s   a
  IL_000b:  constrained. ConsoleApplication2.Test
  IL_0011:  callvirt   instance string [mscorlib]System.Object::ToString()
  IL_0016:  pop
  IL_0017:  ldc.i4.5
  IL_0018:  stloc.1
  IL_0019:  ldloca.s   b
  IL_001b:  call       instance string [mscorlib]System.Int32::ToString()
  IL_0020:  pop …
Run Code Online (Sandbox Code Playgroud)

.net c# clr boxing cil

4
推荐指数
1
解决办法
204
查看次数

ASP.NET Core日志API作为默认存储日志在哪里?

在ASP.NET Core 2.0中,我使用默认的日志记录API.我的应用程序作为Azure Web App托管.

我的问题:这些输出在哪里?我该如何修改它?

(我现在不需要在我的数据库或文件系统中使用它们,只需阅读最近的日志进行一些调试).

我在做什么:

在我的Startup.cs文件中我注入了日志记录:

private readonly ILogger<Startup> _logger;

public Startup(IConfiguration configuration, ILogger<Startup> logger)
{
    _logger = logger;
    Configuration = configuration;
}
Run Code Online (Sandbox Code Playgroud)

然后我写了几个:

_logger.LogInformation("Configure RUNNING");
Run Code Online (Sandbox Code Playgroud)

但是,我无法在FTP/Azure门户中的日志中找到任何这些内容.

c# asp.net logging asp.net-core asp.net-core-2.0

4
推荐指数
1
解决办法
8533
查看次数

如何通过在String中指定其名称来获取枚举类型

假设我有这个枚举:

namespace BusinessRule
{
    public enum SalaryCriteria : int
        {
            [EnumDisplayName(DisplayName = "Per Month")]
            Per_Month = 1,
            [EnumDisplayName(DisplayName = "Per Year")]
            Per_Year = 2,
            [EnumDisplayName(DisplayName = "Per Week")]
            Per_Week = 3
        }
}
Run Code Online (Sandbox Code Playgroud)

我的名字在一个字符串变量中,如:

string EnumAtt = "SalaryCriteria";
Run Code Online (Sandbox Code Playgroud)

我试图检查这个枚举是否由这个名称定义,如果定义我想得到它的instance.i尝试这样,但type返回null:

        string EnumAtt = "SalaryCriteria";
        Type myType1 = Type.GetType(EnumAtt);
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

        string EnumAtt = "BusinessRule.SalaryCriteria";
        Type myType1 = Type.GetType(EnumAtt);
Run Code Online (Sandbox Code Playgroud)

任何想法我怎么能实现这一点.

c# reflection enums types

3
推荐指数
1
解决办法
1万
查看次数

我在哪里可以找到System.Web.HttpContext.Current.Server dll?

我在哪里可以找到System.Web.HttpContext.Current.Server dll.我想在我的代码中使用Server.MapPath(),它需要System.Web.HttpContext.Current.Server命名空间.甚至从我找不到的引用,并将System.Web.HttpContext.Current.Server添加到我的解决方案.有帮助吗?

c# assemblies reference system.web

3
推荐指数
2
解决办法
8973
查看次数

Char to int隐式演员幕后故事

以下内容在c#中有效,Char可以隐式转换为int

int i = 'a';
Run Code Online (Sandbox Code Playgroud)

我只是对.Net Framework在幕后做什么很好奇,我查看char并输入int源代码但无法找到它的编写位置.

任何机构都可以解释幕后发生的事情吗?

c# operators implicit-conversion

3
推荐指数
1
解决办法
285
查看次数

这个LINQ可以更高效吗?

我有一个相当复杂的linq分组,有些重复让我烦恼,但我无法减少它.有没有办法避免两次获得ID =="XYZ"的项目列表?

var example = = new GdsObservableCollection<GroupedQueryResults>(
                items.Where(a => a.SubCategory3 != "{template}")
                     .GroupBy(item => item.SubCategory1)
                     .Select(g => new GroupedQueryResults
                                  {
                                     SubCategory = g.Key,
                                     SectionHeader = (g.Count(x => x.Id == "XYZ") > 0) ?
                                     "Category :" +  g.Where(x => x.Id == "XYZ")
                                                     .First().NewValue :
                                     "Item - " + itemNumber
Run Code Online (Sandbox Code Playgroud)

...

c# linq performance

3
推荐指数
2
解决办法
108
查看次数

Typescript通用接口&lt;T&gt;扩展了相同的名称

这显然可以在C#中正常工作,但不能在Typescript中工作,是否有解决方法,还是我只需要使用其他名称?

export interface IThing<T> extends IThing {
 Value: T;
}

export interface IThing {
Name?: string;
ValueStr?: string;
Type?: string;
}
Run Code Online (Sandbox Code Playgroud)

我得到“所有IThing声明必须具有相同的类型参数”

抱歉,如果我很稠密!

interface typescript

3
推荐指数
2
解决办法
1028
查看次数

异步方法调用是否应该在所有方法调用范围内链接起来?

我正在编写一个 asp.net 核心 Web API,它使用另一个第三方 API 并将一些 JSON 响应返回给调用者,调用者将成为客户端 Web 浏览器。在以异步方式编写我的实现时,visual studio 建议从我的以下异步方法中删除 async await。

我只是想澄清一下,我不需要将这两个方法包装在 async await 中?

以下是方法:

public async Task<T> GetAsync<T>(string url)
{
    return  await GetResponse<T>(HttpMethod.GET,url);
}

public async Task<T> PostAsync<T>(string url, object payload)
{
    return await GetResponse<T>(HttpMethod.POST, url,payload);       
}
Run Code Online (Sandbox Code Playgroud)

以下是上述两种方法消耗的方法:

public async Task<T> GetResponse<T>(HttpMethod method,string url, object payload = null)
{
    System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();

    HttpResponseMessage response;

    switch (method)
    {
        case HttpMethod.POST:
        {
            var content = new StringContent(payload.ToString(), Encoding.UTF8, "application/json");
            response = await client.PostAsync(url, content).ConfigureAwait(false); …
Run Code Online (Sandbox Code Playgroud)

c# async-await asp.net-core asp.net-core-2.2 .net-core-3.1

3
推荐指数
1
解决办法
402
查看次数