2012-07-31 25 views
1

我有一個jQuery對話框,包含多個選項卡,每個選項卡包含一個窗體,並且jQuery對話框包含一個DropDownList具有「全局」值,將跨所有選項卡/形式。MVC3分享DropDownList或隱藏值與多種形式

關鍵是「Site」,根據控制器的結果,它由隱藏字段或下拉列表設置。

這可能是一個非常微不足道的任務,但我無法弄清楚如何去做(對於MVC3,JavaScript和一般網絡編程來說還是新手)。我可以通過執行var value = $('#Site').val();來獲取JavaScript中的值,但我不知道如何將它發送到控制器,因爲我無法在C#變量中保存JS變量,反之亦然。我用這個命令來提交表單:$('#' + 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> 
+0

如果我正確理解你的問題,這應該有所幫助: http://stackoverflow.com/questions/4977858/pass-a-parameter-to-a--controller-using-jquery-ajax – JTMon 2012-07-31 09:32:14

+0

差不多,我正在爲我即將提交的表單添加額外的值。現在明白了,謝謝! :) – 2012-07-31 10:06:35

回答

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> 
    } 

當用戶點擊您的提交按鈕(發送表單之前),從下拉列表中獲得的價值,並將其設置爲隱藏字段: 首先,創建一個hiddenfield表單標籤內

var value = $('#Site').val(); 
$("#tab0Value").val(value); 
+1

謝謝,它的工作!但是一個小小的改正:你需要在隱藏字段中設置「name」參數,否則控制器將不會捕獲它:'' – 2012-07-31 10:05:49

+0

@ShahinDohan Thnaks,添加了名稱屬性。 – 2012-07-31 10:10:15