デモの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>
<% } %>