0

我试图将动态数据发送到会话,以便在页面加载时动态值将由具有加载不同数据的 LINQ 语句的代码块使用......我试图在视图端执行所有这些操作去控制器..你可以通过代码更好地理解它..这只是我想尝试而不是在任何地方使用的想法......

@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 值分配给会话,我不确定它是否可能.. 它只是一个尝试.. 谢谢!

4

1 回答 1

0

首先,当您决定使用 MVC 作为您的开发设计模式视图时,应该主要包含可视化标记代码(Html、CSS、JavaScript)。您的逻辑应该在您的控制器中编译并返回一个模型,其中包含呈现您的视图所需的信息。

在您的情况下,解决方案是将选择框的值发布到控制器中的操作并设置会话的值

看法

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

行动

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

   return view();

  }

希望这可以帮助

于 2013-01-25T10:58:12.630 回答