【问题标题】:ViewModel binding without SelectList in ASP.NET MVCASP.NET MVC 中没有 SelectList 的 ViewModel 绑定
【发布时间】:2016-11-18 13:45:49
【问题描述】:

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

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

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

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

【问题讨论】:

  • 请出示代码

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


【解决方案1】:

不清楚您所说的“从此列表中选择一个项目并提交页面”是什么意思。您是选择一个项目,可能填写更多字段,然后提交整个 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

【讨论】:

  • 谢谢你的回答,克里斯。我的情况是场景3。明天会测试并接受你的答案。
  • 确认它正在工作。再次感谢克里斯。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-16
相关资源
最近更新 更多