我正在製作一個webapp,使用帶有4個選項卡的ASP.NET,C#和jQuery,以及用戶填寫的第三個選項卡上的表單。但是,無論何時用戶提交表單數據,都會返回到第一個選項卡,並且我希望它轉到第二個選項卡上,或者保留在第三個選項卡上,具體取決於用戶放入表單中的內容。到目前爲止,我可以使用Response.redirect()
來重新加載帶有正確錨定標記(#tab-2或#tab-3)的頁面,這將使頁面顯示正確的標記。但是,這樣做會丟失表單中提交的所有數據,所以我還需要將所有表單數據放入查詢字符串中,這似乎是一個可怕的想法。根據狀態代碼選擇不同的jquery-ui選項卡
理想情況下,我想要做的是將頁面加載到適當的選項卡。
所以我現在有這個功能,被用戶稱爲後點擊一個按鈕(我覺得這個被稱爲服務器加載頁面):
public virtual void editClicked (object sender, EventArgs args)
{
// Get the data
string primaryUser = Request.Form.Get (CompPrimUser.UniqueID);
string computerName = Request.Form.Get (compCompName.UniqueID);
// Data verification
if (computerName == "") {
// Bad data, reload third tab with user's entered data
// and inform them they need to fix it.
compeditId.Value = POSTED;
return;
}
// Store the Data, display second tab
}
compeditId是一個隱藏字段,在Page_Load()
調用該頁面,將根據發佈的數據而不是空字段(或來自mysql數據庫)正確填寫表單。
我曾想過調用Server.Transfer()
作爲加載具有正確錨點標記的頁面的一種方式,但它只使用.aspx文件,忽略任何剩餘的查詢字符串。
最後,我直接用夾子從jQuery網站打開查詢字符串到適當的標籤,即:
<script type="text/javascript">
$(function() {
$("a, intput:submit", ".toplevelnav").button();
$("a", ".toplevelnav").click(function() { return true; });
});
$(function() { $("#accordion").accordion({ header: "h3" }); });
$(function() { $("#tabs").tabs(); });
</script>
而在HTML中所列的實際標籤:
<div id="tabs" style=" font-size:14px;">
<ul>
<li><a href="#tabs-1">Clients Overview</a></li>
<li><a href="#tabs-2">Client Detail</a></li>
<li><a href="#tabs-3">Computers</a></li>
<li><a href="#tabs-4">Settings</a></li>
</ul>
<div id="tabs-1">
<cab:ClientList ID="clientList" runat="server" />
</div>
<div id="tabs-2">
<cab:ClientDetail ID="clientDetail" runat="server" />
</div>
<div id="tabs-3">
<cab:Computers ID="computers" runat="server" />
</div>
<div id="tabs-4">
</div>
</div>
那麼有沒有人有任何想法,我可以如何讓服務器發送一個不同的選項卡默認選擇比基於查詢字符串?或者至少讓服務器更改查詢字符串而不會丟失表單中的發佈數據?
謝謝。
編輯:我也嘗試使用html表單的動作屬性標記來告訴它提交到一個aspx文件與#tab-3
錨點。但是,服務器會忽略這一點。另外,這個問題是我們不知道我們是否想要第二個或第三個選項卡,直到數據被髮送到服務器。
爲什麼不只是做一個AJAX提交呢? – Mathletics 2012-01-04 21:26:39
爲什麼不在表單的'action'屬性中放置'#tab-2'或'#tab-3'? – 2012-01-04 21:32:16
@Manthletics,因爲我以前沒有聽說過它,現在我正在研究它,希望它能起作用... – 2012-01-04 21:34:09