3

デモのjqueryUIダイアログ(モデルダイアログ)のサンプル を取得して、それをasp.net mvcプロジェクトに含めようとしましたが、何か奇妙なことがわかりました。

jquery uiダイアログのdivタグ内にコンテンツがある場合、デフォルトのモデルバインダーは、これらの要素をフォームから削除した場合と同様に、サーバーへの投稿中にコンテンツを取得しません。

フルビューコードは以下のとおりです。下部に表示されている場合は、ダイアログの内容が表示されるセクションがあります。

<div id="dialog"

問題は、「divダイアログ」内のテーブルに、バインディングデータオブジェクトフィールドにマップする入力も多数あることです。デバッグ中にコントローラーのアクションを見ると、投稿後にこれらはすべてnullになります。

コードがフォーム要素内にあるため、投稿時にデフォルトのモデルバインダー「スコープ」からそれを削除するjquery uiダイアログjsコードは何をすることができますか?


Javascriptコード:

<script type="text/javascript">
    $(function() {

        $("#dialog").dialog({
            bgiframe: true,
            autoOpen: false,
            height: 500,
            width: 500,
            modal: true,

            buttons: {
                'Create an account': function() {

HTMLコード

    <% using (Html.BeginForm("UpdateTester", "Applications", FormMethod.Post))
       {%>

        <table id="users" class="ui-widget ui-widget-content">
            <thead>
                <tr class="ui-widget-header ">
                    <th>Name</th>
                    <th>Email </th>
                    <th>Details</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>
                        <input type='hidden' name='peopleUpdater.person[0].c' value="1" />
                        <input type='hidden' name='peopleUpdater.person[0].b.Id' value="1" />
                        <input type='hidden' name='peopleUpdater.person[0].a[0].Id' value="1" />                            John Doe
                        <input type='hidden' name='peopleUpdater.person[0].name' value="joe" />
                    </td>
                    <td>
                        john.doe@example.com
                        <input name='peopleUpdater.person[0].email' type='hidden' value="email" />
                    </td>
                    <td>
                        Locations:
                        <%=Model.BusinessLocations.Length %><input type="button" value="Details" id="showDetails" />
                    </td>
                </tr>
            </tbody>
        </table>
    </div>
    <input type="submit" id="Button1" class="ui-button ui-state-default ui-corner-all" />Submit

    <div id="dialog" title="Create new user">
        <%=ApplicationHTMLHelper.BuildTableLocations("aa", Model.Application.BusinessLocations, true, "peopleUpdater.person[0]")%>
     </div>

<% } %>
4

1 に答える 1

2

同様の問題でこの他のStackoverflowの質問を見つけましたが、部分的に機能します。

jQueryモーダルウィンドウがフォームから要素を削除します

送信前にダイアログ要素をフォームに押し戻し、問題を修正します

于 2010-01-16T12:16:13.257 に答える