在我的ASP.NET核心应用程序中,我有一个ASP.NET MVC视图,它显示了一个产品列表。 (我想这也适用于其他版本的MVC。)
当我从此列表中选择一个项目并提交页面时,我希望所选的产品ID绑定到控制器的action方法中的ViewModel属性。我正在使用POST。
由于某些格式问题,我不想使用SelectList来呈现产品列表。因此,我在视图中循环遍历列表。
如何将所选产品与入站ViewModel对象的ProductId属性绑定?
答案 0 :(得分:2)
目前还不清楚“选择此列表中的项目并提交页面”是什么意思。您是在挑选一个项目,可能填写更多的字段,然后提交整个shebang,还是选择一个项目构成提交表单。根据具体情况,有几种方法:
如果选择一个项目提交表单,那么您只需将“选择”按钮设为提交按钮并为其指定名称和值即可。例如:
Item 1 <button type="submit" name="ProductId" value="1">Select</button>
无论点击哪个“选择”按钮,其值都会显示为ProductId
。
如果您需要在页面上保留选择项目以填写其他字段,则可以使用单选按钮作为选择列表的替代选项。这与上述方法类似,但您不会立即发布表单。您的输入看起来很相似:
<label>
<input type="radio" name="ProductId" value="1"> Item 1
</label>
<label>
<input type="radio" name="ProductId" value="2"> Item 2
</label>
...
最后,如果您不需要立即提交并且您也不想使用单选按钮,那么您唯一真正的选择是使用JavaScript来设置隐藏输入。您将绑定到“选择”按钮的单击事件或其他任何内容,然后将name="ProductId"
的隐藏输入设置为适当的值。然后,当您最终提交表单时,隐藏输入的值将发布为ProductId
。