将动态数据发送到asp.net mvc 4视图页面中的代码块...

时间:2013-01-24 14:38:42

标签: asp.net asp.net-mvc-3 razor asp.net-mvc-4

我试图将动态数据发送到会话,以便在页面加载时,代码块将使用动态值,该代码块具有加载不同数据的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值,我不确定它是否可能..它只是一个尝试..谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

查看

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

动作

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

   return view();

  }

希望这有帮助