C#复选框需要选择一个项目,如果没有,则向用户显示一条消息

时间:2017-04-25 09:31:47

标签: c# validation asp.net-mvc-4 razor checkbox

早上的人,

我在c#mvc项目的create.cshtml页面上有以下复选框区域。我正在将visual studio 2015用于我的项目。

我的网页上有一个部分,以复选框的形式列出了用户的三个选项。用户必须至少选择其中一项。

这是我的create.cshtml页面上复选框的代码....

             @Html.CheckBoxFor(model => model.carer.ParentResp, new { id = "rbParent" }))
             @Html.Label("rbParent", "Parental Responsibility")<br />
             @Html.CheckBoxFor(model => model.carer.NextOfKin, new { id = "rbNext" })
             @Html.Label("rbNext", "Next of Kin")<br />
             @Html.CheckBoxFor(model => model.carer.Keyholder, new { id = "rbKey" })
             @Html.Label("rbKey", "Keyholder?")

使用上面的代码,我对所有三个项目都有以下错误....

  • 无法将lambda表达式转换为预期的委托类型,因为块中的某些返回类型不能隐式转换为委托返回类型...
  • 无法隐式转换类型'bool?' 'bool'。存在显式转换(您是否错过了演员?)

在我的数据库中,三个字段设置为数据类型位,在我的mvc项目模型中,它们是使用实体框架作为数据类型bool引入的。

我相信在我的控制器中,我需要检查并查看是否检查了这些项目。

我已将以下代码添加到我的控制器......

        //Do a check to see if the checkbox have a value
        if (carer.ParentResp.HasValue || carer.NextOfKin.HasValue || carer.Keyholder.HasValue)
        {
            vmPopulateData.carer = carer;
        }
        else 
        {
            ClientScript.RegisterClientScriptBlock(Me.GetType(), "Message", "alert('" + "Please Select all check boxes that apply" + "');", true);
        }

我只是想检查三个复选框中是否有一个值,如果没有,则向用户显示一条消息。

我见过许多使用ClientScript.RegisterClientscriptBlock方法的示例,但我无法使其工作。我收到以下错误消息......

  • 当前上下文中不存在“ClientScript”名称
  • 当前上下文中不存在名称“我”

我是否缺少注册这些项目的命名空间?

我真的很想让这个功能起作用。人们以前使用的任何指针或示例都会受到欢迎。我不想在这里做任何真正聪明或过度工程的事情。只需查找一个简单的验证元素来检查并查看用户是否已检查至少一个项目,以便可以提交表单。

此致 贝蒂

1 个答案:

答案 0 :(得分:0)

您可以使用ajax调用调用您的action方法,并以json retrun返回验证消息。这可能是显示脚本消息的最简单方法。 在调用函数之前,您可以验证复选框并收集值并使用ajax

将其传递给action方法
     $.ajax(this.href, {
  success: function(data) {
     $('#main').html($(data).find('#main *'));
     $('#notification-bar').text('The page has been successfully loaded');
  },
  error: function(err) {
     //show your error message
  }
  });