Обвързване на радио бутон към обект в MVC 3 VB.net

Прегледах много сайтове и предложения, но не можах да накарам обвързващата концепция да работи. Изправен съм пред следния проблем.

Имам следния клас модел, както е показано по-долу: Главен модел на изглед:

    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">  


Още една цел е, че след като се обвържа, искам актуализираната стойност, избрана от потребителя в обект, и да я предам на публикуване на действие, дефинирано в контролера. Всяка помощ ще бъде високо оценена.


person Vinod Nair    schedule 27.03.2012    source източник


Отговори (1)


Вярвам, че причината да не е обвързваща е, че сте публикували името на обекта в бутона за избор като „Език“, но той е дефиниран в LanguageVM като „IsEnglish“.

За да опростя нещата, препоръчвам винаги да използвате Html.RadioButtonFor, има много по-малко място за грешка, когато не е необходимо да кодирате твърдо името на очакваната променлива. Тогава трябва да е нещо подобно

<%= Html.RadioButtonFor(m => m.IsEnglish, true)%>English 
<%= Html.RadioButtonFor(m => m.IsEnglish, false)%> Spanish
person DMulligan    schedule 27.03.2012
comment
Опитах горния код и в изгледа на източника можех да видя следния код: ‹input id=IsEnglish name=IsEnglish type=radio value=True /›English ‹input checked=checked id=IsEnglish name=IsEnglish type=radio value=False /› испански. Но по някаква причина действието ми за публикуване не се задейства при следващо щракване на бутон, така че не знам дали стойността е обвързана или не. всяко предложение - - person Vinod Nair; 27.03.2012
comment
Благодаря на Финкелщайн, проработи. Актуализирах решението по-горе в публикацията. - person Vinod Nair; 28.03.2012