0

jquery モーダル ポップアップ ウィンドウに表示される部分ビューがあります。ビューは、動的に生成されたチェックボックスのリストで構成され、1 つ以上のチェックボックスを含めることができます。モデルをコントローラーに戻そうとすると問題が発生します。モデルは (T の) 一般的なリストです

以下はコントローラーのアクションです。

   <HttpPost>
    Function CertBodiesListPostBack(ByVal Model As List(Of DataModels.DataModels.CertBodyVM)) As JsonResult
        ViewBag.CourseId = Model(0).courseId
        Data_Manager.CertifyBody.SaveCertBody(Model(0).courseId, Model)
        Return Json(New With {.success = True})
    End Function

ビュー ビューは次のようになります。

 @Modeltype List(Of DataModels.CertBodyVM)
 @Code

 End Code
<link href="@Url.Content("~/Content/jquery-ui-1.10.3.custom.css")" rel="stylesheet" type="text/css" />
<script type="text/javascript">
   $(document).ready(function () {
    $("#btnUpdate").click(function () {
        $('#waitMessage').show();

        $.ajax({
            url: '@Url.Action("CertBodiesListPostBack", "Admin")',
            type: 'POST',
            data: JSON.stringify('@model'),
            dataType: "json",
            context: $(this),
            success: function (result) {

                $('#waitMessage').hide();
                $("#dialog-edit").dialog().dialog('close');

            },
            error: function (result) {
                alert('There was an error processing the request!!');

            }
        });
        return false;
    });
   });
 </script>
<style>
 #waitMessage {

  background:  url('../../Content/Images/animated-processing.gif')  scroll no-repeat center;
  height: 100px; width: 100px;
  position: fixed; left: 50%; top: 50%; z-index: 1000;
  margin: -25px 0 0 -25px;
  }
 </style>
 <div id="waitMessage" class="dataContainer" style="display: none;">
  <p>Saving Note</p>
 </div>
 @Using Html.BeginForm()
 @<fieldset><legend></legend>

 <table>
    <tr>
    <th>Certifying Bodies</th>
    </tr>
 @For i As Integer = 0 To Model.Count - 1
         Dim y As Integer = i
         Dim d As String = Model(y).certName
     @<tr><td style="text-align: left">@Html.CheckBoxFor(Function(model) model(y).certSelected)@Html.Label(d)@Html.HiddenFor(Function(model) model(y).certBodyId)@Html.HiddenFor(Function(model) model(y).courseId)</td></tr>
   Next

   </table>
   <input type="button" value="Save" id="btnUpdate" name="cmd" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" />

    <input type="button" value="Cancel" id="btncancel" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" />
    </fieldset>   

    End Using

モデルは次のとおりです。

    Public Class CertBodyVM
    Private _certName As String
    Public Property certName() As String
        Get
            Return _certName
        End Get
        Set(ByVal value As String)
            _certName = value
        End Set
    End Property
    Private _certSelected As Boolean
    Public Property certSelected() As Boolean
        Get
            Return _certSelected
        End Get
        Set(ByVal value As Boolean)
            _certSelected = value
        End Set
    End Property
    Private m_certBodyId As Integer
    Public Property certBodyId() As Integer
        Get
            Return m_certBodyId
        End Get
        Set(ByVal value As Integer)
            m_certBodyId = value
        End Set
    End Property
    Private m_CourseId As Integer
    Public Property courseId() As Integer
        Get
            Return m_CourseId
        End Get
        Set(ByVal value As Integer)
            m_CourseId = value
        End Set
    End Property
End Class

私はjavascriptとAJAXが初めてなので

4

1 に答える 1

1

ajax呼び出しを使用してビュー上のモデルをコントローラーに渡したい場合は、使用できます

data: $('form').serialize()

フォームに id を指定し、フォームの id を次のように渡すことができます。

   data: $('#myform').serialize()
于 2013-09-03T05:12:15.357 に答える