【问题标题】:MVC model binding for bootstrap button group引导按钮组的 MVC 模型绑定
【发布时间】:2016-06-18 20:04:46
【问题描述】:

我的表单中有引导“按钮”输入组

<div class="btn-group type-select pull-left top-buffer add-on" id="typeOrderSelect">
    <a class="btn btn-primary popover-default" data-content="Car" href="#">
        <i class="fa fa-car fa-lg"></i>
    </a>
    <a class="btn btn-primary popover-default" data-content="Bike" href="#">
        <i class="fa fa-motorcycle fa-lg"></i>
    </a>
    <a class="btn btn-primary popover-default" data-content="Truck" href="#">
        <i class="fa fa-truck fa-lg"></i>
    </a>
</div>

现在我想将它绑定到现有模型。我该怎么做?因为从技术上讲,它只是 html 链接。我现在唯一的想法是创建一个隐藏字段,当用户单击 &lt;a&gt; 链接然后通过 JS 我将某些数据输入到隐藏字段(简单的单选按钮字段)中。

你的想法是什么?谢谢。

更新: 当用户点击汽车、自行车或卡车时,他会更改属性,然后在提交表单后,我希望在服务器上接收此属性。

【问题讨论】:

    标签: asp.net-core-mvc


    【解决方案1】:

    您应该使用&lt;input&gt; 单选按钮和&lt;label&gt;s 并将这些单选的名称绑定到您的属性,而不是使用&lt;a&gt; 链接。

    在你的模型中,假设你有

    public string Selection { get; set; }
    

    那么你的观点应该是

    <div class="btn-group type-select pull-left top-buffer add-on" data-toggle="buttons">
        <label class="btn btn-primary">
            <input type="radio" name="Selection" value="Car">
            <i class="fa fa-car fa-lg"></i>
        </label>
        <label class="btn btn-primary">
             <input type="radio" name="Selection" value="Bike">
             <i class="fa fa-motorcycle fa-lg"></i>
        </label>
        <label class="btn btn-primary">
              <input type="radio" name="Selection" value="Truck">
              <i class="fa fa-truck fa-lg"></i>
        </label>
    </div>
    

    这会重现以下内容:(已检查自行车)

    当您提交表单时,您的 Selection 属性将为 "Bike"

    【讨论】:

    • 谢谢伙计。就这么简单。有时我想我自己把我的生活复杂化了。
    【解决方案2】:

    好的,我已经更改了答案,因为我首先误解了问题。

    一般你有两种选择:

    1. JavaSctipt 就像你建议的那样,它是简单的解决方案,如果你已经在页面上使用了 JS 就可以了。

    2. 使用 CSS 的风格化单选按钮。您可以仅使用 CSS 而无需 JS 来更改“收音机”的视觉外观。这是更多的兼容性解决方案。 有很多例子如何做到这一点 - 这是其中之一: CSS Styling Radio Button and Checkboxes.

    当然单选按钮会自动绑定到Model,只要设置正确的id(每个输入不同)和name(每个输入都一样),例如:

     <input type="radio" id="radio1" name="content" value="Car" />
     <input type="radio" id="radio2" name="content" value="Bike" />
     <input type="radio" id="radio3" name="content" value="Truck" />
    

    【讨论】:

    • 我认为 OP 不想在用户单击按钮时发布表单,而是希望在用户单击任何按钮时更改属性。
    • 嗯......可能是我的误解;)对我来说“绑定到模型”。 “隐藏输入”和“单选按钮”建议您最终将数据发送到某个地方。
    • 在那种情况下,就像你说的那样 - OP 可以像他自己建议的那样使用 JS,或者你可以简单地使用 CSS 风格化的单选按钮(你可以考虑单选按钮作为解决方案)。
    • 完全是 GeorgeChond。这就是我想要的。
    • 当用户点击汽车、自行车或卡车时,他更改了属性,然后在提交表单后我想在服务器上接收此属性。抱歉 Lukasx Makovej,这是我的错,我想我没有完全描述我的问题。
    猜你喜欢
    • 1970-01-01
    • 2011-02-03
    • 2011-07-20
    • 2013-05-27
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    相关资源
    最近更新 更多