【问题标题】:How do I validate a checkbox value in ASP.NET MVC?如何验证 ASP.NET MVC 中的复选框值?
【发布时间】:2016-07-25 21:30:27
【问题描述】:

我有以下ViewModel

public class ReportFilters
{
    [Required]
    public DateTime From { get; set; }

    [Required]
    public DateTime To { get; set; }

    [Required]
    public int UserId { get; set; }

    public bool IsCorrect { get; set; }
} 

当我将此路由调用到IsCorrect 时,我传递了值10,但ModelState.IsValid 始终返回false。

这在我添加public bool IsCorrect { get; set; }后开始发生

这是我的控制器操作的样子

[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult GetTotals([Bind(Include = "From,To,UserId,IsCorrect ")] ReportFilters reportFilters)
{
    if (ModelState.IsValid)
    {
        SomeModel results;

        if(reportFilters.IsCorrect)
        {
            results = conn.Database.SqlQuery<SomeModel>(SomeQuery, from, to).ToList();
        } else 
        {
            results = conn.Database.SqlQuery<SomeModel>(SomeOtherQuery, from, to).ToList();
        }

        return Json(results, JsonRequestBehavior.AllowGet);
    }

    return Json(new { }, JsonRequestBehavior.AllowGet);

}

问题

如何正确验证复选框的值?如果值为1,则应为true,否则为false

【问题讨论】:

  • 你能把[Bind(Include = "From,To,UserId,IsCorrect ")]拿出来再试一次吗?

标签: c# asp.net asp.net-mvc validation asp.net-mvc-5


【解决方案1】:

确保正确传递参数

您是否尝试过显式传递 truefalse(即 Controller/Action?IsCorrect=true)而不是 0 或 1?

复选框应始终直接绑定到布尔值。您只需要确保复选框的name 属性与您的参数或模型属性完全匹配(即IsCorrect):

<!-- Using a plain CheckBox -->
<input name='IsCorrect' type='checkbox' />
<!-- Using an HTML Helper -->
@Html.CheckBox("IsCorrect")

您可以在下方see a working example demonstrating this

【讨论】:

  • 使用值 truefalse 有效。但是如果我通过false ModelState.IsValid 也将返回false。该复选框应该是可选的而不是必需的
  • 您的模型中没有任何内容会因为 IsCorrect 属性而导致其无效。但是,您需要确保传递其他属性,因为这些属性是用[Required] 标记装饰的,因此如果为空/ null,则会导致验证错误。
  • 我通过 jQuery 使用 ajax 请求进行定位,类似这样 ` if ($('#CorrectDispositions').is(':checked')) return "true";否则返回“假”;`
  • is() 函数将返回一个布尔值,因此如果您打算传递它,您可能会明确指出它绑定到您的IsCorrect 属性(即{ /* Other data here */ , IsCorrect : $('#CorrectDispositions').is(':checked') })跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-31
  • 2014-02-08
  • 2014-07-13
  • 1970-01-01
  • 2012-03-02
  • 1970-01-01
  • 2012-06-20
相关资源
最近更新 更多