使用远程验证,MVC和Razor页面失败NETCore 2.2 :::“ InvalidOperationException:找不到用于远程验证的URL”

问题描述

目标:使用Razor Pages .NET Core 2.2和MVC创建新帐户时,请仔细检查用户名是否存在。

错误:InvalidOperationException:找不到用于远程验证的URL。

我看过其他StackOverflow线程,但目前没有任何解决方案。

我的UserName输入数据注释:

[Microsoft.AspNetCore.Mvc.Remote("IsUserNameUsed","ValidationsController",ErrorMessage = "Username is taken.")]
public string UserName { get; set; }

我在Controller ValidationsController中的代码:

  public IActionResult IsUserNameUsed([Bind(Prefix = "Accounts.UserName")] string username)
        { 
            string query = "SELECT UserName FROM Accounts WHERE UserName={0}";
            var found = _context.Accounts
            .FromSql(query,username)
            .FirstOrDefault();

            if (found.Equals(username))
            {
                return Json(true);
            }
            else
            { 
            return Json(false);
            }
        }

当我尝试导航到有问题的剃刀页面时出现此错误。

InvalidOperationException: No URL for remote validation could be found.
 <input asp-for="Accounts.UserName" class="form-control" />

我发现有人提到将MVC路由添加到严格的Razor Pages应用程序中。我在下面添加了代码,但是无论添加什么,都会出现错误。

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",template: "{controller=Home}/{action=Index}/{id?}");
});

我使用实际的Controller名称尝试了不同的路由值,这是任务:

routes.MapRoute(
    name: "default",template: "{controller=Validations}/{action=IsUserNameUsed}/{username?}");

另一种尝试(没有“?”):

  name: "default",template: "{controller=Validations}/{action=IsUserNameUsed}/{username}");
再次

(没有用户名):

name: "default",template: "{controller=Validations}/{action=IsUserNameUsed}");

我知道如果它是蛇,它会咬我,但我完全傻眼了。

我仍然收到“ InvalidOperationException:找不到用于远程验证的URL。”

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)