小编Łuk*_*wik的帖子

Blazor WASM - 全局捕获 401 并导航到所有 HttpClient 调用的登录页面

在中blazor template httpclient添加Program.cs class

builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
Run Code Online (Sandbox Code Playgroud)

后来使用如下:

forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>("WeatherForecast");
Run Code Online (Sandbox Code Playgroud)

有什么方法可以覆盖该基本 httpclient 并将其注入到我的所有页面中,这将:

  • 捕获任何服务器请求(post/get 等)中返回的 401
  • 尝试刷新令牌(为此调用API)
  • 刷新失败返回登录

我发现我可以定义一个自定义服务来包装所有这些 HTTP 客户端调用并执行我提到的操作,但是有没有更好的方法来做到这一点?

c# blazor blazor-webassembly

6
推荐指数
2
解决办法
3606
查看次数

MVC5中的自定义验证错误消息

我是MVC5和asp.net的新手,我找不到答案,所以如果有人能告诉我如何在验证失败后自定义消息,我将不胜感激.我们假设我有这样的代码:

    [Required]
    [MaxLength(11),MinLength(11)]
    [RegularExpression("^[0-9]+$")]

    public string Pesel { get; set; }
Run Code Online (Sandbox Code Playgroud)

在使用除数字之外的任何其他符号后,我得到如下消息:字段Pesel必须匹配正则表达式'^ [0-9] + $'

我该如何更改此消息?

validation asp.net-mvc asp.net-mvc-5

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

使用asp.net标识更新用户角色

我有以下问题.使用下面的代码更改用户的当前角色时,我收到如下消息的异常:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public virtual ActionResult Edit(User user, string role)
    {
        if (ModelState.IsValid)
        {
            var oldUser = DB.Users.SingleOrDefault(u => u.Id == user.Id);
            var oldRoleId = oldUser.Roles.SingleOrDefault().RoleId;
            var oldRoleName = DB.Roles.SingleOrDefault(r => r.Id == oldRoleId).Name;
            if (oldRoleName != role)
            {
                Manager.RemoveFromRole(user.Id, oldRoleName);
                Manager.AddToRole(user.Id, role);
            }
            DB.Entry(user).State = EntityState.Modified;

            return RedirectToAction(MVC.User.Index());
        }
        return View(user);
    }
Run Code Online (Sandbox Code Playgroud)

附加"Models.Entities.User"类型的实体失败,因为同一类型的另一个实体已具有相同的主键值.如果图中的任何实体具有冲突的键值,则在使用"附加"方法或将实体的状态设置为"未更改"或"已修改"时,可能会发生这种情况.这可能是因为某些实体是新的并且尚未收到数据库生成的键值.在这种情况下,使用"添加"方法或"已添加"实体状态来跟踪图形,然后根据需要将非新实体的状态设置为"未更改"或"已修改".

有人知道这个问题的一个很好的解决方案吗?

asp.net asp.net-mvc asp.net-mvc-5 asp.net-identity

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

实体框架核心 - 在迁移到.net核心后首先返回重复的结果

所以我在ef核心中有一个以下查询,这导致重复的结果甚至很难我首先调用或默认它

DateTime maxDate = SqlDateTime.MaxValue.Value;
var results = (from r in _dbContext.audit_Results
                join e in _dbContext.audit_DataEncounters on new { r.IdAudit, r.PatientFirstName, r.PatientLastName, r.PatientDOB } equals new { e.IdAudit, PatientFirstName = e.FirstName, PatientLastName = e.LastName, PatientDOB = e.DateOfBirth } into eJoin
                let e = eJoin.Where(it => it.StartDate <= r.TransactionDate && r.TransactionDate <= (it.EndDate ?? maxDate))
                            .OrderBy(it => it.Inpatient).OrderByDescending(it => it.StartDate)
                            .FirstOrDefault()
                where r.IdAudit == idAudit && r.PatientFirstName == "ERIC" && r.PatientLastName == "BROOKS"
                select new AuditResultBulkModel()
                {
                    IdResult = r.IdResult,
                    map_HasPatient …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework entity-framework-core .net-core

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

mvc中创建表单的默认值

我想在我的asp.net mvc 5应用程序中设置文本区域的默认值.我的Patient模型中有一个字段如下所示:

    [Display(Name = "Date of Birth")]
    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
    [Required]
    public DateTime DateOfBirth { get; set; }
Run Code Online (Sandbox Code Playgroud)

我想将此字段的默认值设置为当前日期.现在它显示这个表格:http://scr.hu/11m6/lf9d5.我已经尝试使用构造函数并在其中设置DateOfBirth的值:

    public Patient()
    {
        DateOfBirth = DateTime.Now;
    }
Run Code Online (Sandbox Code Playgroud)

但它没有效果.我也尝试编辑我的视图.cshtml文件到这个:

@Html.EditorFor(model => model.DateOfBirth, new { @value = "2014-05-05" })
Run Code Online (Sandbox Code Playgroud)

但它也没有效果.有谁知道解决这个问题?

c# model-view-controller asp.net-mvc

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