MVC3共享DropDownList或具有多个表单的隐藏值

时间:2012-07-31 09:15:20

标签: javascript jquery ajax asp.net-mvc-3 razor

我有一个jQuery对话框,其中包含多个选项卡,每个选项卡包含一个表单,jQuery对话框包含一个带有" global"的DropDownList。将在所有选项卡/表单中共享的值。

密钥是" Site",它由隐藏字段或下拉列表设置,具体取决于控制器的结果。

这可能是一项非常简单的任务,但我无法弄清楚如何做到这一点(对于MVC3,JavaScript和Web编程一般来说还是新手)。我可以通过执行var value = $('#Site').val();来获取JavaScript中的值,但我不知道如何将其发送到控制器,因为我无法将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>

1 个答案:

答案 0 :(得分:1)

你可以用javascript做到这一点。 首先,在表单标记内创建一个隐藏字段:

@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);