问题描述
目标:使用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 (将#修改为@)