Привязка радио кнопки к объекту в MVC 3 VB.net - PullRequest
1 голос
/ 27 марта 2012

Я просмотрел много сайтов и предложений, но не смог заставить работать концепцию привязки. Я столкнулся со следующей проблемой.

У меня есть следующий класс модели, как показано ниже: Модель Master View:

    Public Class MasterVM


    Public Property Language As LanguageVM
    Public Property Question As QuestionVM

    Public menus As List(Of MenuVM)

    Public Property UserControlName As String
    Public Property Model As Object

End Class

Модель просмотра языка

 Public Class LanguageVM

#Region "Properties"

        Public Property IsEnglish As Boolean

#End Region


    End Class

Мой класс контроллеров:

Public Class WizardController
        Inherits System.Web.Mvc.Controller

        '
        ' GET: /Wizard
        Function Index() As ActionResult
            Dim oWizard As New Wizard
            Dim oMasterWizard As New MasterVM
            Dim IsNewlyIniated As Boolean = False
            If (System.Web.HttpContext.Current.Session(Constants.WizardObjectCollection) IsNot Nothing) Then
                If (System.Web.HttpContext.Current.Session(Constants.WizardObjectCollection).ToString <> "") Then
                    oMasterWizard = DirectCast(System.Web.HttpContext.Current.Session(Constants.WizardObjectCollection), MasterVM)
                Else
                    IsNewlyIniated = True
                End If
            Else
                IsNewlyIniated = True
            End If

            If (IsNewlyIniated) Then
                oMasterWizard = oWizard.GetWizardInfo()
                If (Session("Language").ToString() = "Spanish") Then
                    oMasterWizard.Wizard.Language.IsEnglish = False
                Else
                    oMasterWizard.Wizard.Language.IsEnglish = True
                End If

                System.Web.HttpContext.Current.Session(Constants.WizardObjectCollection) = oMasterWizard

            End If

            Return View("Wizard", oMasterWizard)

        End Function

 <HttpPost()>
        Function GetLanguageInfo(ByVal oLanguage As LanguageVM) As ActionResult
            Try
                Dim a As Integer
                a = 10
            Catch ex As Exception
                Throw ex
            End Try
        End Function

    End Class

Я хочу отобразить два переключателя в моем представлении, отображая язык как английский и испанский. По умолчанию это должно быть связано с моим языком класса isenglish и isspanish свойство.

и когда сообщение происходит, я должен получить значение, если пользователь изменил его в свойстве Is selected. как я могу получить это.

Код моей страницы ASCX следующий:

<%@ Control Language="VB" Inherits="System.Web.Mvc.ViewUserControl(Of SBE.Services.MasterWizard.LanguageVM)" %>
<form method="post" action="/Wizard/GetLanguageInfo">
<fieldset>
    <legend>Wizard Language</legend>
    <p>Please select the language for your Wizard</p>

      <%= Html.RadioButtonFor(Function(model) model.IsEnglish, True)%>English  
<%= Html.RadioButtonFor(Function(model) model.IsEnglish, False)%> Spanish     
<input id="btnNext" type="submit" value="Next">  


Еще одна цель состоит в том, чтобы после связывания я хотел, чтобы обновленное значение было выбрано пользователем в объекте и передано ему для публикации действия, определенного в контроллере. Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 27 марта 2012

Я считаю, что причина, по которой он не является обязательным, заключается в том, что вы указали имя объекта в переключателе как «Язык», но в LanguageVM оно определено как «IsEnglish».

Чтобы упростить процесс, я рекомендуювсегда, Html.RadioButtonFor, гораздо меньше места для ошибок, когда вам не нужно жестко кодировать имя ожидаемой переменной.Тогда это должно быть что-то вроде

<%= Html.RadioButtonFor(m => m.IsEnglish, true)%>English 
<%= Html.RadioButtonFor(m => m.IsEnglish, false)%> Spanish
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...