1

複数のタブを保持するjQueryダイアログがあり、各タブにはフォームが含まれ、jQueryダイアログには、すべてのタブ/フォーム間で共有される「グローバル」値を持つDropDownListが含まれています。

キーは「サイト」です。これは、コントローラーからの結果に応じて、非表示フィールドまたはドロップダウンリストのいずれかによって設定されます。

これはおそらく非常に簡単な作業ですが、その方法がわかりません(MVC3、JavaScript、およびWebプログラミング全般はまだ新しいです)。JavaScriptで値を取得することはできますvar value = $('#Site').val();が、JS変数をC#変数に保存できないため、コントローラーに送信する方法がわかりません。その逆も同様です。このコマンドを使用してフォームを送信します。$('#' + tabid).submit();

コード:

<div id='jquery-dialog' title="Create new">

  @if (ViewBag.SiteList == null)
  {
    @Html.Hidden("Site", Request.Params["ForSite"])
  }
  else
  {
    @Html.DropDownList("Site", (SelectList)ViewBag.SiteList)
  }

  <div id="tabs">
    <ul>
      <li><a href="#tab0">Tab 0</a></li>
      <li><a href="#tab1">Tab 1</a></li>
    </ul>

    @using (Ajax.BeginForm("Create", null, new AjaxOptions() { HttpMethod = "POST" }, new { id = "tab0" }))
    {
      <div id="tab0">
        This is Tab 0
      </div>
    }

    @using (Ajax.BeginForm("Create", null, new AjaxOptions() { HttpMethod = "POST" }, new { id = "tab1" }))
    {
      <div id="tab1">
        This is Tab 1
      </div>
    }
  </div>
</div>
4

1 に答える 1

1

ジャバスクリプトでできます。まず、フォーム タグ内に hiddenfield を作成します。

@using (Ajax.BeginForm("Create", null, new AjaxOptions() { HttpMethod = "POST" }, new { id = "tab0" }))
    {
      <div id="tab0">
        <input id="tab0Value" name="tab0Value" type="hidden" value="">
        This is Tab 0
      </div>
    }

次に、送信ボタンがクリックされたときに (フォームが送信される前に)、dropDownList から値を取得し、非表示フィールドに設定します。

var value = $('#Site').val();
$("#tab0Value").val(value);
于 2012-07-31T09:56:14.187 に答える