代码之家  ›  专栏  ›  技术社区  ›  JacobIRR

将对象列表作为viewModel属性的POST表单(不带ajax)

  •  -1
  • JacobIRR  · 技术社区  · 6 年前

    我有一个视图模型,它在cshtml视图中显示如下:

    @model MyViewModel
    <form action="...">
      @foreach (var item in this.Model.MyList)
      {
        <input type="checkbox" name="item.Name"/>
      }
    </form>
    

    然后在后端有一个控制器方法:

    [HttpPost]
    public ActionResult SaveMyViewModel(MyViewModel viewModel)
    {
    ...
    

    当我检查 viewModel 在发布时的controller方法中,它具有所有空属性。我希望它有价值 MyList 在那里,每件东西都有胸部 迈利斯特 .

    没有Ajax这可能吗?我不能在这里使用ajax。

    为了正确地将viewModel的精确表示返回到服务器,必须对表单执行什么操作?

    1 回复  |  直到 6 年前
        1
  •  0
  •   dj079    6 年前

    我假设你 button 提交 form 是在 <form> element 在里面 HTML .

    当你发布 List (Array) 一个 Object HTML格式 Controller ,您需要在 List HTML name property .

    另外 name property 也应该与 Property C# 代码。

    您的代码应该如下所示才能正常工作。

    <form action="...">
       @{ 
    var i = 0; 
    }
      @foreach (var item in this.Model.MyList)
      { var nameChecked = string.Empty; 
     if(item.Name != null) nameChecked = “checked”;
    <input type="checkbox" name="viewModel[i].Name" @nameChecked  />
    i++;
      }
    </form>
    

    注意:这是一个基本的代码示例。你总是可以提高工作效率。

    希望这有帮助!