【问题标题】:Problem in binding input type radio in MVC VB.NET在 MVC VB.NET 中绑定输入类型单选的问题
【发布时间】:2018-09-07 10:59:11
【问题描述】:

我在绑定 mvc vb.net 中的输入类型单选按钮时遇到问题。我正在传递模型属性中的值,但无法根据值绑定单选按钮。下面是单选按钮的html:

Checking:<input type="radio" id="rdChecking" name="C" value="Checking"/>
        Savings:<input type="radio" id="rdSavings" name="S" value="Savings" />

我在这里定义了模型:

Public Class AgencySweepSettingsModel
    ....
    ....
    Public Property AccountTypeChecking As String
    Public Property AccountTypeSaving As String
End Class

这里我在模型属性中传递值:

If dsAgencySweepInfo.Tables(0).Rows(0).Item(5) = "C" Then
                            .AccountTypeChecking = "C"
                        Else
                            .AccountTypeSaving = "S"
                        End If

请告诉我如何绑定这个单选按钮。

【问题讨论】:

  • 单选按钮的name 属性需要与属性名称匹配。目前尚不清楚您想要做什么,但猜测是您想要一个属性(例如AccountType),然后单选按钮将是&lt;input type="radio" name="AccountType" value="Saving" /&gt;&lt;input type="radio" name="AccountType" value="Checking" /&gt;。但是您永远不应该手动生成输入 - 使用强类型 @Html.RadioButtonFor() 方法

标签: asp.net-mvc vb.net


【解决方案1】:

最好使用强类型的@Html.RadioButtonFor() 助手来解决单选按钮绑定问题,如下例所示:

型号

Public Class AgencySweepSettingsModel
    ' other properties

    Public Property AccountType As String
End Class

查看

@Html.RadioButtonFor(Function (model) model.AccountType, "Checking", New With { Key .id = "rdChecking" })<label for="rdChecking">Checking</label>

@Html.RadioButtonFor(Function (model) model.AccountType, "Savings", New With { Key .id = "rdSavings" })<label for="rdSavings">Savings</label>

控制器动作

Public Function ActionName() As ActionResult
    Dim model As AgencySweepSettingsModel = New AgencySweepSettingsModel()

    ' other stuff

    ' assume dsAgencySweepInfo is a DataSet

    If dsAgencySweepInfo.Tables(0).Rows(0).Item(5) = "C" Then
        model.AccountType = "Checking"
    Else
        model.AccountType = "Savings"
    End If

    ' other stuff

    Return View(model)    
End Function

<HttpPost()>
Public Function ActionName(ByVal model As AgencySweepSettingsModel) As ActionResult
    ' do something
    Return View(model)
End Function

如果您仍想使用标准 BindAttribute 而不是强类型视图模型,则 name 元素的 name 属性必须与包含两个单选按钮属性名称的 Include 部分匹配:

<input type="radio" id="rdChecking" name="AccountType" value="Checking"/><label for="rdChecking">Checking</label>
<input type="radio" id="rdSavings" name="AccountType" value="Savings" /><label for="rdSavings">Savings</label>

请注意,由于单选按钮在同一组中始终只有一个选定值,因此您应该使用绑定到多个 &lt;input type="radio" /&gt; 元素的单个属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    相关资源
    最近更新 更多