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 に答える