2014-01-15 52 views
0

有誰知道如何在MVC中將Yes/No單選按鈕設置爲會話變量,以便稍後在此過程中檢查會話變量。我不希望在我的模型中存儲單選按鈕的值,因爲用戶需要編輯和保存,因此將此用戶默認爲此複選框值。MVC Razor單選按鈕值會話變量

@Html.Label("New Report") 
@Html.RadioButton("requestNewReport", "1")Yes 
@Html.RadioButton("requestNewReport", "0", new { @checked = "checked" })No 

感謝

+0

http://stackoverflow.com/questions/9525128/jquery-set-radio-button –

回答

0

你可以用jQuery和標有HttpPost屬性的控制方法,做到這一點很容易,你的控制器的方法會是這個樣子:

[HttpPost] 
public ActionResult GetSessionVariable() 
{ 
    const string sessionVariableName = "MySessionVariable"; 

    var sessionVariable = Session[sessionVariableName] as string; 

    if (sessionVariable == null) 
    { 
     Session[sessionVariableName] = "No"; 
     sessionVariable = "No"; 
    } 

    return Content(sessionVariable); 
} 

顯然您的會話變量會在你的程序的其他地方發生改變,這只是現在的情況,如果還沒有分配,就將它設置爲默認值。

那麼在你看來,你可以有像這樣一種形式,包含你的單選按鈕,並點擊它時,輸入按鈕運行JavaScript方法來獲得從上述控制方法的價值而無需刷新頁面:

<form id="MyForm"> 
<fieldset> 
    <legend>My Form</legend> 
    <p> 
     <label>Radio buttons</label> 

     <input type="radio" name="radioYesNo" id="radioNo" value="No" checked="checked" /> 
     <label for="radioNo">No</label> 

     <input type="radio" name="radioYesNo" id="radioYes" value="Yes" /> 
     <label for="radioYes">Yes</label> 

     <button type="submit" onclick="UpdateRadioBox();">Update Radio Button</button> 
    </p> 
</fieldset> 
</form> 

JavaScript方法此更新下面,它使用的jQuery提供的Ajax功能更新的單選按鈕:

<script> 

    function UpdateRadioBox() { 
     $("#MyForm").submit(
       function() { 
        var url = "Home/GetSessionVariable"; 

        $.ajax 
        (
         { 
          type: "POST", 
          url: url, 
          success: function (data) { 
           if (data == "Yes") { 
            $("#radioYes").attr('checked', 'checked'); 
           } else { 
            $("#radioNo").attr('checked', 'checked'); 
           } 
          } 
         } 
        ); 

        return false; 
       } 
      ); 
     } 

</script> 

您不必輸入按鈕下運行JavaScript,您可以不管你喜歡做什麼(在...上)例如每隔x秒鐘)。