【问题标题】:Using Button elements in MVC like a Dropdownlist in binding to a ViewModel change在 MVC 中使用 Button 元素,例如绑定到 ViewModel 更改的下拉列表
【发布时间】:2018-07-28 21:17:45
【问题描述】:

所以我想看看有没有人这样做...

我正在尝试绑定一组按钮中的一个按钮的单击操作(希望在没有 JavaScript 的情况下进行,但如果我必须这样做,则不是世界末日),以选择一些值,相同您可以使用选择列表/下拉列表的方式。

例如,当我更改以下 MVC ViewModel 绑定的 DDL 时,它会在表单提交到 MVC 控制器时自动更新 MySelectedValue:

@Html.DropDownListFor(x => x.MySelectedValue, Model.MySelectList)

我想做同样的事情,只是用按钮。这里最重要的是,我不希望这些按钮提交表单,只需更改一个值。

注意:这些按钮绑定的值列表永远不会很长,UI/UX方向是把它们作为按钮。

<Button>ThisButton</Button>
<Button>ThatButton</Button>
<Button>ThatButton2</Button>

我一直在挖掘,但没有找到适合使用典型的@Html.Button 做一些事情,而不提交表单。

感谢任何想法或指导,而我自己会继续寻找解决方案。谢谢!

【问题讨论】:

  • 如果您的button 没有指定type=,那么它将默认提交其表单,即设为type="button"。如果您只允许用户选择一个按钮,那么您可以使用radio buttons styled to look like regular buttons。否则,您将需要 JavaScript 在单击按钮时更新隐藏的表单元素。
  • 所以我理解了使用单选按钮的方法,以及 type= 的概念。我只是想知道如何将 MVC ViewModel 绑定到点击(最重要的是),而不是需要通过客户端代码来完成。现在我倾向于这个:@foreach (var option in Model.MySelectList) { &lt;span&gt; @Html.RadioButtonFor(x =&gt; x.MySelectedValue, option.Value) @Html.Label(option.Text) &lt;/span&gt; }
  • ViewModel 没有任何事件绑定。 Razor 代码中的任何内容都会在服务器上呈现,然后发送到浏览器。客户端更改仅发生在浏览器上。单击客户端会更新一个表单,您可以将其提交到服务器,处理数据,然后填充一个新的 ViewModel 以呈现一个新的视图。
  • 正确 - 我没有尝试绑定到事件,我只是想将 ViewModel 与 Radiobutton 绑定在一起,因此当提交到服务器的操作触发时,它会影响 ViewModel 中的更改.使用像常规按钮一样的样式按钮,并通过上面的 foreach 连接它们,它已经为我解决了这个问题。

标签: javascript c# asp.net-mvc razor viewmodel


【解决方案1】:

与 Jasen 的对话(以 cmets 为单位)https://stackoverflow.com/users/2030565/jasen

我能够通过对话解决这种情况,并探索绑定到单选按钮的 MVC 值。

感谢杰森的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-04
    • 2014-03-28
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多