Checked / NULL复选框POST true / false istead

时间:2018-07-16 05:20:32

标签: c# html asp.net-mvc

我试图建立一个小型网站,但您可以创建一个表,然后从该表中生成一个数据库。我有两个用于输入类型/名称的字段,还有一个用于 NotNULL 复选框

现在我的问题是,如果客户端(浏览器)请求更改 COLUMN COUNT ,我想“存储”所做的更改,然后添加/删除单元格,为此想要发送ture / false而不是checked / NULL。这样我就可以将它们存储到notNull数组(控制器代码)中

这是我的网站的样子:

我还希望右键[0]显示“ +”而不是其值,即使使用<input>字段也可以吗? enter image description here

代码:

@for (int i = 0; i < @Model.Columns.Count; i++)
      {
          <tr>
              <td id="td_id">
                  <input list="types" class="form-control" name="typeSelected" value="@Model.Columns[i].DbType">
                  <datalist id="types">
                      @foreach (var item in @Model.Columns[i].Types)
                      {
                          <option value="@item">@item</option>
                      }
                  </datalist>
              </td>
              <td>
                  <input type="text" class="form-control" name="Name" value="@Model.Columns[i].Name" />
              </td>
              <td>
                  @*@Html.CheckBoxFor(model => model.Columns[i].notNull, new { @name="notNull" })*@
                  <input type="checkbox" name="notNull" class="checkbox" checked="@Model.Columns[i].notNull" value="true" />
                  <input type="hidden" name="notNull" class="checkbox" checked="@Model.Columns[i].notNull" value="false" />
              </td>
              <td>
                  <input type="submit" class="btn btn-default" name="addCell" value="@i" />
              </td>
          </tr>
      }

控制器:

private CreateTableModels model = new CreateTableModels();
//
// GET: /CreateTable/
public ActionResult Index(int count = 1, System.Data.SqlDbType[] typeSelected = null, string[] Name = null, bool[] notNull = null, string[] addCell = null)
{
    if (count < 0)
    {
        return View(model);
    }
    while (count > model.Columns.Count)
    {
        model.Columns.Add(new QlikViewStammdaten.Models.CreateTableColumnModels());
    }
    while (count < model.Columns.Count)
    {
        model.Columns.RemoveAt(model.Columns.Count - 1);
    }

    SetOldValues(typeSelected, "DbType");
    SetOldValues(Name, "Name");
    SetOldValues(notNull, "notNull");

    return View(model);
}

private void SetOldValues<T>(T[] type, string name) 
{
    if (type != null)
    {
        for (int i = 0; i < type.Count(); i++)
        {
            var obj = model.Columns[i];
            var prop = obj.GetType().GetProperty(name);
            if (prop != null && prop.CanWrite)
            {
                prop.SetValue(obj, type[i], null);
            }
        }
    }
}

0 个答案:

没有答案