Html ASP.NETMVC将数据库字符串传递给复选框值

Html ASP.NETMVC将数据库字符串传递给复选框值,html,asp.net-mvc,xhtml,Html,Asp.net Mvc,Xhtml,这与我昨天发布的一个关于复选框的问题密切相关 以下是我的设置: 我有一个数据库目录,其中有一个名称列表和其他字段,作为我的模型 我有一个搜索页面,用户可以在其中搜索此目录并选择一个名称 我有一个表单页面,显示名称,旁边有一个复选框,允许用户决定是否将名称作为值包含在提交的表单中 处理提交表单的控制器 目标: 我想知道的是,如何获得在目录中选择的名称的字符串值,使其既显示在表单页面视图中,又将该字符串包含在复选框的值字段中?您无法更改选中复选框的值;如果选中复选框,则其值始终为“开”,MVC可

这与我昨天发布的一个关于复选框的问题密切相关

以下是我的设置:

  • 我有一个数据库目录,其中有一个名称列表和其他字段,作为我的模型

  • 我有一个搜索页面,用户可以在其中搜索此目录并选择一个名称

  • 我有一个表单页面,显示名称,旁边有一个复选框,允许用户决定是否将名称作为值包含在提交的表单中

  • 处理提交表单的控制器

目标:


我想知道的是,如何获得在目录中选择的名称的字符串值,使其既显示在表单页面视图中,又将该字符串包含在复选框的值字段中?

您无法更改选中复选框的值;如果选中复选框,则其值始终为“开”,MVC可以使用该复选框将已发布的值自动映射为布尔值。但是,如果此名称列表是动态的,并且每个名称都是唯一的,则可以使用动态命名复选框生成表单。然后,在控制器中,您可以检查原始表单以查看检查了哪些名称。例如,在视图中,您的代码可能如下所示:

<form>
  <% /* Some loop here */ { %>
    <input type="checkbox" name="name_<%= Html.Encode(theName) %>" /> 
    <label><%= Html.Encode(theName) %></label>
  <% } %>
</form>

这些与复选框关联的名称是一致的,还是动态生成的?
foreach (string name in listOfAvailableNames)
{
    if (Request.Form["name_" + name] == "on")
    {
        // Handle the name being selected
    }
    else
    {
        // Handle the name not being selected
    }
}