我的主頁面上有一個下拉列表,需要在更改後回發。回發之後,無論發起什麼頁面,回發都需要重新顯示。查看主頁面和回傳
我的問題是我在哪裏處理?顯然,我不想修改我的項目中的每個Action ...我的猜測是可能回發給其他固定操作,並將該操作重定向回引用者的頁面。我對麼?有什麼想法嗎?
謝謝。
Jason
我的主頁面上有一個下拉列表,需要在更改後回發。回發之後,無論發起什麼頁面,回發都需要重新顯示。查看主頁面和回傳
我的問題是我在哪裏處理?顯然,我不想修改我的項目中的每個Action ...我的猜測是可能回發給其他固定操作,並將該操作重定向回引用者的頁面。我對麼?有什麼想法嗎?
謝謝。
Jason
在Site.Master中,我最終將自己的下拉列表中的下拉列表包裝回到專用控制器/操作中。
<% Using Html.BeginForm("ChangeRole", "Home")%>
<div id="roleSelector">Change Role: <%=Html.DropDownList("Role", DirectCast(ViewData.Item("Roles"), SelectList), New With {.onchange = "this.form.submit();"})%></div>
<% End Using%>
在控制器我用下面的代碼來改變模式,然後重定向回引用URL。
<AcceptVerbs(HttpVerbs.Post)> _
Public Function ChangeRole() As ActionResult
Me.CurrentUser.SetRole(DirectCast([Enum].Parse(GetType(Models.ApplicationRoles), Me.Request.Item("Role")), Models.ApplicationRoles))
Return Redirect(Request.UrlReferrer.ToString())
End Function
我不確定這是否是推薦的方式,但我一直無法想到另一種解決方案。
嗨,現在4年後,我問自己同樣的問題與同類型的情況。我也只能拿出這個看起來有點直率的技術實現,很高興你提出了同樣的想法。 – Michel 2014-05-21 20:08:18
當您從下拉列表中回覆更改時,您在做什麼?你可以在jQuery調用中處理這個問題,從而不需要重新顯示頁面呢?
我在網站的其他部分使用jQuery和ajax,但在這種情況下,它需要是回發。實質上,下拉菜單充當幾個不同角色(「Admin」,「User」,「Developer」)之間的切換,它可以完全改變頁面視圖。 – Jason 2010-01-21 23:02:55
呼籲行動方法可以是異步的,因爲這樣,你可以發佈你需要從單選按鈕的任何信息到一個行動方法,而無需重新加載頁面。
如果您需要更新頁面的一部分,可以將其替換爲呈現的操作方法的內容。如果您使用jQuery ajax方法,您可以將特定信息發佈到您的方法。
例如,這樣的事情:
$(document).ready(function()
{
$("#myRadioButton").change(function()
{
//Post to your action method, with the value of the radio button, function to call on success
$.post('yourActionMethodUrl', $(this).val(), function()
{
//Update some part of the page
});
});
});
這是基於內存,所以你可能需要檢查語法。
看起來你需要模擬MVC中的Web窗體。爲什麼不首先使用Web窗體。 – 2010-01-19 22:46:56
他可能會對MVC中的工作方式感到困惑。 – 2010-01-19 22:48:36
不,我明白不同之處。該網站正在開發中,所以在這種情況下,我在每個頁面上都有一個下拉菜單,允許開發人員和測試人員在「管理員」模式和「用戶」模式之間切換。在選擇下拉菜單後,需要根據新選擇的角色使用新視圖刷新頁面。 – Jason 2010-01-21 22:58:44