小编OjM*_*OjM的帖子

输入标记助手不使用Razor代码

我想将输入标记助手与剃刀代码组合起来设置属性,但我不能让这两种技术一起工作.我只是试图根据视图模型属性的值在输入字段上设置disabled属性.

当我把剃刀代码放在asp-for标签后面时,剃刀智能感知器无法被识别,并且该字段未按预期禁用...

<input asp-for="OtherDrugs" @((Model.OtherDrugs == null) ? "disabled" : "") class="form-control" />
Run Code Online (Sandbox Code Playgroud)

渲染输出......

<input type="text" id="OtherDrugs" name="OtherDrugs" value="" />
Run Code Online (Sandbox Code Playgroud)

当我将剃刀代码放在asp-for标签之前时,无法识别标签帮助程序intellisense,并且未按预期使用视图模型属性设置该字段...

<input @((Model.OtherDrugs == null) ? "disabled" : "") asp-for="OtherDrug" class="form-control" />
Run Code Online (Sandbox Code Playgroud)

渲染输出......

<input disabled asp-for="OtherDrugs" class="form-control" />
Run Code Online (Sandbox Code Playgroud)

请注意,如果剃刀代码位于类属性中,则组合标记助手和剃刀会起作用.遗憾的是,输入字段需要disabled属性,而不是bootstrap 3的禁用类.

有没有办法让这项工作?

c# razor asp.net-core asp.net-core-tag-helpers

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

ASP NET Core 2.0 appsettings.Development.json无法使用日志记录配置

我已经安装了VS2017 15.3.0 Preview 4和.NET Core 2.0 Preview 2,并创建了一个默认的Web MVC应用程序.我有兴趣了解新的日志记录功能如何工作但我无法让VS在查看Debug输出窗口时使用appsettings.Development.json中定义的日志记录值.

我的理解是appsettings.Development.json文件优先于appsettings.json,但只有后一个文件中的值对调试窗口有任何影响.这是正确的吗?如果有,是否需要额外的设置?

以下是价值和结果......

appsettings.json

{
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "None"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Information"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

appsettings.Development.json

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Information",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

调试时清空输出(请注意仅显示Application Insights遥测记录,我还没有找到如何摆脱它)

空输出

但是,如果我更改appsettings.json中的日志级别,那么我会看到输出符合预期...

appsettings.json

{
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Information"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Information"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

调试时的新输出(请注意,Microsoft.AspNetCore.Hosting.Internal.WebHost:现在包含信息) …

asp.net-core-mvc visual-studio-2017 asp.net-core-2.0

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

如何使用具有可空日期的null-coalescing运算符

我的视图模型具有可以为空的日期属性,例如...

[DataType(DataType.Date)]
public DateTime? SanctionExpires { get; set; }
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用null-coalescing运算符时......

var test = model.SanctionExpires.Value.ToUniversalTime() ?? model.SanctionExpires;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误...

算'''' 不能应用于'datetime'和'datetime'类型的操作数

我认为这应该工作,因为我将我的日期属性设置为可空,这篇文章表明它应该也可以工作.我究竟做错了什么?

UPDATE

为了更清晰,我想使用null-coaslescing来分配一个Dapper参数,该参数将更新数据库中的DateTime字段.该字段可以接受空值或日期时间值.基本上,如果用户指定日期,则将提供的日期分配给参数,否则指定null ...

p.Add("@SanctionExpires", model.SanctionExpires.Value.ToUniversalTime() ?? model.SanctionExpires);
Run Code Online (Sandbox Code Playgroud)

请注意,我必须进行UTC转换,因为我使用的是使用UTC作为日期的SQL Azure,否则如果我只是从本地系统传递数据,那么我的时间将超过11小时(我在澳大利亚).在sql中我使用函数在更新表之前将日期偏移到我的时区.

我目前的解决方案是让它工作,但不确定这是否是最干净的方式.能够排成一列真是太好了......

if (model.SanctionExpires == null)
    p.Add("@SanctionExpires", model.SanctionExpires);
else
    p.Add("@SanctionExpires", model.SanctionExpires.Value.ToUniversalTime());
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc datetime nullable asp.net-core

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

如何从 Asp.Net Core 视图组件返回错误的 HTTP 状态代码

我试图从 Asp.Net Core 中的视图组件返回 HTTP 500 或 BadRequest() 结果,但是此返回类型似乎不适用于视图组件。状态代码返回类型是否可用于视图组件,或者我的设计是否错误?

\n\n

我正在通过 ajax 调用我的控制器操作,如下所示......

\n\n
<a asp-controller="Client" asp-action="LoadVisit" asp-route-id="@item.VisitID" data-ajax="true" data-ajax-method="GET" data-ajax-update="#ClientVisit" data-ajax-mode="replace" data-ajax-failure="AjaxOnFailure(xhr,\xc2\xa0status,\xc2\xa0error)" role="button"><i class="fa fa-folder-open-o"></i></a>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的控制器操作正在调用/返回我的视图组件,如下所示......

\n\n
public IActionResult LoadVisit(int? id)\n{\n\n    if (id == null || id == 0)\n    {\n        return NotFound();\n    }\n\n    return ViewComponent("ClientVisit", new { visitID = id.GetValueOrDefault() });\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的 ClientVisit 视图组件具有以下内容...

\n\n
public async Task<IViewComponentResult> InvokeAsync(int? clientID, int? visitID)\n{\n\n    try\n    {\n        var model = new VisitViewModel();\n        model = await visitAPI.GetVisit(clientID, visitID);\n        return View(model);\n    }\n …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core asp.net-core-viewcomponent

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

返回ASP.Net Core MVC中的上一页

从我的客户端详细信息页面,我有一个按钮来编辑重定向到编辑页面的客户端记录.我在编辑页面上有一个"返回客户端详细信息"链接,我想将用户重定向回以前的客户端详细信息页面.

<a asp-controller="Client" asp-action="Detail" asp-route-id="@Model.ClientID">Return to client detail</a>
Run Code Online (Sandbox Code Playgroud)

目前,这可以按预期工作,但从头开始重新加载详细信息页面(即再次运行所有各种数据库查询)需要额外的时间.由于用户实际上只是在不更改客户端状态的情况下取消编辑,因此我希望将用户返回到上一个详细信息页面,而无需再次执行控制器操作.

基本上我想模拟浏览器后退按钮(以提高响应能力),但我不知道如何实现这个或者是否这样做是好的做法.一些指导意见将不胜感激.

谢谢

asp.net-mvc razor asp.net-core

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

ASP .Net Core自定义标签助手将CamelCase属性转换为空格

在ASP.Net Core中,是否可以在视图模型中自动转换驼峰案例属性名称,以便在使用标签助手时在相应的标签中插入空格?

如果我的视图模型看起来像这样...

[Display(Name = "First Name")]
public string FirstName { get; set; }

[Display(Name = "Last Name")]
public string LastName { get; set; }

[Display(Name = "Referral Date")]
public DateTime ReferralDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

似乎很多额外的配置都应用了数据注释,例如

[显示(名称=“名字”)]

在单词之间简单地插入一个空格。最好使用Tag Helpers默认插入空格,以避免这种手动配置和可能的错别字。

如果不能,自定义标签助手可以在这种情况下提供帮助,如果可以,它将如何工作?

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

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

ASP Net Core - 将外部身份提供商与个人用户帐户混合以进行审计跟踪

我已经使用个人用户帐户创建了默认的 ASP Net Core MVC Web 应用程序。我向 AspNetUsers 表添加了一个自定义 UserID INT 字段,并将其作为外键链接到所有其他自定义表,以便我可以跟踪用户在数据库中插入/更新的记录。我这样做是因为我更喜欢使用 INT 字段作为主键。在这种情况下,一切正常。

我现在正在考虑使用外部身份提供程序,例如 Azure Active Directory,但是我无法弄清楚如何将 Azure AD(或任何其他身份提供程序)中的用户链接到我的本地数据库表以维护用户 ID 外键约束。从我所有的研究中,我找不到任何关于这种情况的文章。

如何将外部身份提供商的用户信息链接到我的本地数据库表?我担心我可能需要在外部身份提供程序和本地 AspNet 用户表中双重处理用户帐户管理,以使用其他自定义表维护外键,这看起来很疯狂。

也许我遗漏了一些明显的东西,或者我的方法都是错误的,所以如果有更好的替代方案来跟踪谁在使用外部身份提供程序的 ASP Net Core Web 应用程序的数据库表中做了什么,我会很乐意采用它。

authentication azure-active-directory asp.net-core-mvc asp.net-core-identity

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