Проблема в привязке типа входа радио в MVC VB.NET - PullRequest
0 голосов
/ 06 сентября 2018

Я сталкиваюсь с проблемой в привязке переключателя типа ввода в 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

Пожалуйста, скажите мне, как связать этот переключатель.

1 Ответ

0 голосов
/ 07 сентября 2018

Лучше использовать хелпер со строгой типизацией @Html.RadioButtonFor() для решения проблемы привязки переключателя, как в примере ниже:

Модель

Public Class AgencySweepSettingsModel
    ' other properties

    Public Property AccountType As String
End Class

View

@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 для элементов <input> должен совпадать с частью 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>

Обратите внимание, что, поскольку переключатель всегда имеет только одно выбранное значение в одной и той же группе, вы должны использовать одно свойство, которое привязано к нескольким <input type="radio" /> элементам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...