ASP.NET MVC中没有SelectList的ViewModel绑定

时间:2016-11-18 13:45:49

标签: asp.net-mvc asp.net-core asp.net-core-mvc asp.net-core-1.0

在我的ASP.NET核心应用程序中,我有一个ASP.NET MVC视图,它显示了一个产品列表。 (我想这也适用于其他版本的MVC。)

当我从此列表中选择一个项目并提交页面时,我希望所选的产品ID绑定到控制器的action方法中的ViewModel属性。我正在使用POST。

由于某些格式问题,我不想使用SelectList来呈现产品列表。因此,我在视图中循环遍历列表。

如何将所选产品与入站ViewModel对象的ProductId属性绑定?

1 个答案:

答案 0 :(得分:2)

目前还不清楚“选择此列表中的项目并提交页面”是什么意思。您是在挑选一个项目,可能填写更多的字段,然后提交整个shebang,还是选择一个项目构成提交表单。根据具体情况,有几种方法:

  1. 如果选择一个项目提交表单,那么您只需将“选择”按钮设为提交按钮并为其指定名称和值即可。例如:

    Item 1 <button type="submit" name="ProductId" value="1">Select</button>
    

    无论点击哪个“选择”按钮,其值都会显示为ProductId

  2. 如果您需要在页面上保留选择项目以填写其他字段,则可以使用单选按钮作为选择列表的替代选项。这与上述方法类似,但您不会立即发布表单。您的输入看起来很相似:

    <label>
        <input type="radio" name="ProductId" value="1"> Item 1
    </label>
    <label>
        <input type="radio" name="ProductId" value="2"> Item 2
    </label>
    ...
    
  3. 最后,如果您不需要立即提交并且您也不想使用单选按钮,那么您唯一真正的选择是使用JavaScript来设置隐藏输入。您将绑定到“选择”按钮的单击事件或其他任何内容,然后将name="ProductId"的隐藏输入设置为适当的值。然后,当您最终提交表单时,隐藏输入的值将发布为ProductId