2013-01-24 24 views
0

我試圖將動態數據發送到會話,以便在頁面加載時動態值將被代碼塊使用,該代碼塊具有加載不同數據的LINQ語句...我試圖在視圖方面做所有這些,而不去控制器..你可以通過代碼更好地理解它..它只是一個想法,我想試試和不使用任何地方......將動態數據發送到asp.net mvc 4中的視圖中的代碼塊...

@Code 
    ViewData("Title") = "Index"  
    Dim vs As New Ve.VeDataSource 
    If (Session("dynamicDataToPass") = Nothing) Then 
     Dim q = ((From r In vs.aspnet_Roles Order By r.RoleId Select r.RoleName).Skip(1)).FirstOrDefault 
     ViewData("q1") = q 
    Else 
     Dim m As Integer = Convert.ToInt32(Session("dynamicDataToPass").ToString) 
     Dim q = ((From r In vs.aspnet_Roles Order By r.RoleId Select r.RoleName).Skip(m)).FirstOrDefault 
     ViewData("q1") = q 
    End If 
    Session("dynamicDataToPass") = Nothing 
End Code 

<h2>Index</h2> 

@ViewData("q1") 
<select id="secbox"> 
    <option>1</option> 
    <option>2</option> 
    <option>3</option> 
</select> 

<script> 
    $(document).ready(function() { 
     $("#secbox").change(function() { 

      var p= $("#secbox").val(); 
      @Code 
       Session("dynamicDataToPass") = Nothing 
       Session("dynamicDataToPass") = //something here to set the val to session 
      End Code 
      window.location.reload(); 
     }); 
    }); 

</script> 

我的問題是如何將jQuery值分配給會話,我不知道是否有可能或不..它只是一個嘗試..謝謝!

回答

0

首先,您決定使用MVC作爲您的開發設計模式視圖應該主要包含可視標記代碼(Html,CSS,JavaScript)。您的邏輯應該在您的控制器中編譯並返回一個模型,其中包含呈現視圖所需的信息。

在你的情況下,解決辦法是選擇框的值張貼到你的控制器的操作和設置會話

查看

$.post(/Save, {id : $("#secbox").val()}, function() 
{ 
    // DO SOMETHING 
}); 

行動

[HttpPost] 
public ActionResult Save(int id) 
{ 
    Session("dynamicDataToPass") = id 

    return view(); 

    } 
的價值

希望這可以幫助

+0

這是我通常做的..使用控制器insted我想發送會話的值,然後使用JavaScript重新加載頁面......這只是一個測試,我沒有在任何地方使用它... –

+0

我最初的回答是否回答你的問題?你可能想要考慮使用jquery模板或者knockout.js來更新視圖 –

相關問題