2010-11-25 80 views
1

我正在使用ASP.NET MVC製作網頁。 我有以下輸入隱藏definied:輸入隱藏控件不會保留回發之間的值

<%=Html.Hidden("inputHiddenSelectedMenuId") %> 

而且我將其值設置在這個js功能:

function SetSelectedMenu(id) { 
    $('#inputHiddenSelectedMenuId').val(id);   
} 

後進行回發在js初始化函數,我想使用的值集在輸入中隱藏但值是字符串空的。

$(document).ready(function() { 

    $('div.nav > a').removeClass('active'); 
    var id = $('#inputHiddenSelectedMenuId').val(); 
    if (id != "") { 
     $("#" + id).addClass('active'); 
    }   
}); 

任何人都可以提示爲什麼會發生這種情況嗎?

+0

MVC不支持回傳。這可能是問題的原因是什麼?哪一個你使用的是WebForms還是MVC? – 2010-11-25 17:31:11

+0

當然可以,postback是一個標準的HTML操作,回傳並不是web表單專有的,區別在於web表單回發包含一個叫做viewstate的隱藏字段,允許數據在回傳中保留。另外,我相信他正在嘗試在javascript中回傳後讀取數據。請參閱我的回答。 – Chev 2010-11-25 17:34:01

回答

2

您正試圖在JavaScript中讀取輸入的值。當您單擊表單上的按鈕並執行回發時,您的頁面將被重新加載,並且每次頁面加載時JavaScript都會重新運行。如果您所做的只是讀取javascript中的輸入值,則不需要執行回發。

$('#inputHiddenSelectedMenuId').bind('click', function() 
{ 
    var id = $('#inputHiddenSelectedMenuId').val(); 
    // do stuff with it. 
}); 

點擊功能將在沒有回發的情況下執行。

現在,如果您嘗試在發佈後從MVC內部讀取隱藏字段的內容,那麼這是一個不同的問題。你將不得不通過模型綁定(或直接通過的Request.Form []集合閱讀它從表單數據拉。

public ActionResult SomeActionToPostTo(int inputHiddenSelectedMenuId) 
{ 
    //model binding should find the form field called inputHiddenSelectedMenuId and populate the argument in this method with it's value. If it's not an integer then just change the type of the argument to the appropriate type. 
}