【问题标题】:asp.net core unobtrusive validation fire on a non required field在非必填字段上触发 asp.net 核心不显眼的验证
【发布时间】:2019-02-07 15:30:33
【问题描述】:

我有一个包含 2 个字段的模型,两个字段都不是必需的(没有使用 [Required] 标签)。

在剃须刀页面上,我包含了不显眼的 jquery 验证 js 文件。当我没有填写任何值并发布表单时,我收到一个错误(客户端),要求输入表单中的最后一个字段。

我已经搜索但没有发现类似的问题,因为模型/视图模型中没有必需的标签,那么为什么在客户端需要这样做。

[更新 1:添加代码]

型号:

public class AppUser: IdentityUser
{
public string Name { get; set; }
public int Deposit { get; set; }
}

查看:

<form method="post">
    <div class="form-group">
        <label asp-for="@Model.AppUser.Deposit" class="control-label"></label>
        <input asp-for="@Model.AppUser.Deposit" type="text" class="form-control" />
        <span asp-validation-for="@Model.AppUser.Deposit" class="text-danger"></span>
    </div>

    <div class="form-group">
        <label asp-for="@Model.AppUser.Email" class="control-label"></label>
        <input asp-for="@Model.AppUser.Email" type="text" class="form-control" />
        <span asp-validation-for="@Model.AppUser.Email" class="text-danger"></span>
    </div>
</form>

控制器:

public class SomeModel : PageModel
{
private readonly ApplicationDbContext _context;
private readonly UserManager<AppUser> _userManager;

[BindProperty]
public AppUser AppUser { get; set; }

public SomeModel(ApplicationDbContext context, UserManager<AppUser> userManager)
{
    _context = context;
    _userManager = userManager;
}

public async Task<IActionResult> OnGetAsync()
{
    //..some action
    return Page();
}

public async Task<IActionResult> OnPostAsync()
{
    //..some action
    return Page();
}
}

【问题讨论】:

  • 这个问题我不太清楚,但是如果你想让某些字段不被要求,就不要在模型中放入 reqired 属性。另外,如果你显示一些代码会更好。跨度>
  • @mybirthname 我添加了示例代码。问题是客户端javascript中需要“存款”字段,我无法找到。
  • @user614946 对于Deposit,其类型为int,默认为非空类型,其默认值为0,如果要使其成为必填项,请将其更改为@987654327 @
  • 所以如果像 int 和 double 这样的类型是不显眼的,那么 UI 中默认需要它,因为它们必须有一个非零值?我认为它有点错误,因为这个字段不是必需的,默认情况下应该允许 null。
  • int 永远不能有 null 值? - 它不能因此默认情况下需要它

标签: razor asp.net-core unobtrusive


【解决方案1】:

默认情况下,intdoublebyte 等不可为空的类型是必需的,如果您希望它们是可选的,则必须使用可空类型,例如int?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 2015-04-22
    • 2017-03-13
    • 2020-02-27
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多