小编mal*_*owa的帖子

自闭式TagHelper合并兄弟元素的html标记

我对TagHelper在ASP.NET Core MVC 中引入的行为感到困惑.按照本教程一个有效的电子邮件Tag Helper,我们有机会编写自动关闭标签.根据这篇文章,我们应该使用attbute HtmlTargetElement.下面的类是示例:

 [HtmlTargetElement("email", TagStructure = TagStructure.WithoutEndTag)]
public class EmailTagHelper : TagHelper
{
    private const string EmailDomain = "contoso.com";
    public string MailTo { get; set; }
    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        output.TagName = "a";
        var address = MailTo + "@" + EmailDomain;
        output.Attributes.SetAttribute("href", "mailto:" + address);
        output.Content.SetContent(address);
    }
}
Run Code Online (Sandbox Code Playgroud)

剃刀视图中的标记如:

<strong>Support:</strong>
    <email mail-to="Support"/><br />
<strong>Marketing:</strong>
    <email mail-to="Marketing"/>
Run Code Online (Sandbox Code Playgroud)

但我有意想不到的输出:

<strong>Support:</strong>
<a href="mailto:Support@contoso.com">
    <span>Another content</span>
    <strong>Marketing:</strong>
</a>
<a href="mailto:Marketing@contoso.com"></a>
Run Code Online (Sandbox Code Playgroud)

为什么第一个锚标记包含<span> …

html razor asp.net-core-mvc tag-helpers

10
推荐指数
1
解决办法
281
查看次数

MVC记录范围

我读到MVC中间件框架内部使用带有控制器操作的日志范围:

谨慎使用范围,仅适用于有界限开始和结束的操作.例如,框架提供了围绕MVC操作的范围.避免将许多范围嵌套在一起.

范围是通过调用ILogger.BeginScope方法返回的IDisposable类型,该方法从创建它到处理它的那一刻持续.任何日志记录状态(例如事务标识)在创建范围时附加到范围.

我正在尝试使用此功能来编写一些日志信息.我执行了以下步骤:

1)创建Asp.net核心MVC应用
2)在appsetting.json中将属性"IncludeScopes"设置为"true"
3)创建控制器和动作,如下所示:

  [Route("api/[controller]")]
public class TodoController : Controller
{
    private readonly ILogger<TodoController> _logger;
    public TodoController(ILogger<TodoController> logger)
    {
        _logger = logger;
    }

    // GET: api/values
    [HttpGet]
    public IEnumerable<string> Get()
    {
        _logger.LogInformation(1000, "Listing all items started");
        Thread.Sleep(2000);
        _logger.LogInformation(1000, "Listing all items finished");
        return new string[] { "value1", "value2" };
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望我的日志消息流始终只包含"列出所有项目已启动"和"列出所有已完成的项目"部分,这些部分彼此不相互分离.但当我在同一时间启动两个请求时,得到的日志流如下:

RequestId:xxx列出所有项目已启动
RequestId:yyy列出所有项目已启动
RequestId:xxx列出所有项目已完成
RequestId:yyy列出所有项目已完成

什么原因?这是正确的行为,我在记录的背景下误解了"范围"一词吗?

logging scope asp.net-core-mvc asp.net-core

5
推荐指数
1
解决办法
1425
查看次数

在应用程序启动时使用Entity Framework核心运行数据库迁移

是否可以在应用程序启动时使用Entity Framework Core 配置StartUp.csproject.json运行数据库迁移?

现在我有中间件执行此任务,但它似乎对性能产生负面影响,因为正在检查每个请求收到的数据库.

public class EntityFrameworkUpdateDatabaseMiddleware
{
    private readonly RequestDelegate _next;
    private readonly ApplicationDbContext _dbContext;

    public EntityFrameworkUpdateDatabaseMiddleware(RequestDelegate next, ApplicationDbContext dbContext)
    {
        _next = next;
        _dbContext = dbContext;
    }

    public async Task Invoke(HttpContext context)
    {
        await _dbContext.Database.MigrateAsync();
        await _next.Invoke(context);
    }
}
Run Code Online (Sandbox Code Playgroud)

migration entity-framework-core asp.net-core-mvc asp.net-core

5
推荐指数
1
解决办法
3200
查看次数

使用Entity Framework的规范模式(按属性排序)

我想编写一些API来使用LINQ2Entities对服务器端的实体(SQLServer)进行排序.

我有包含表达式的类表示实体的排序字段和排序方向:

    public class SortOption<TEntity>
    {
       public SortOption(Expression<Func<TEntity, dynamic>> keySelector, 
            bool ascending = true)
        {
            KeySelector = keySelector;
            Ascending = ascending;
        }

       public Expression<Func<TEntity, dynamic>> KeySelector { get; private set; }
       public bool Ascending { get; private set; }
    }
Run Code Online (Sandbox Code Playgroud)

对于我的每个实体,我都有从上面继承的类.例如:

    public class PostSorting: SortOption<PostEntity>
    {
        public PostSorting(): base(p => p.Published)
        {
        }
    }

    public class PostEntity
    {
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid Id { get; set; }
        public DateTime? Published { get; set; }
        public DateTime Modified { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# sorting linq-to-entities entity-framework specification-pattern

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