私は多視点を持ち、内部に2つのビューを持っています。私はサンプルコードを貼り付けます。マルチビューのポストバックを介してviewstateを使用して値を渡す
<asp:MultiView ID="MultiView1" ActiveViewIndex="0" runat="server">
<asp:View ID="View1" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="view1" />
<asp:Label ID="Label2" runat="server" ></asp:Label>
</asp:View>
<asp:View ID="View2" runat="server">
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:Button ID="Button2" runat="server" Text="view2" />
</asp:View>
</asp:MultiView>
私は、txtbox1の値をポストバックに入れたいと思っています。多視点では状態を維持していますが、response.redirectを実行してquerystringをview2に渡します。私はポストバックを行うので、view2のtxtbox1(view1内)の値を使用することはできません。ポストバック中にtxtbox1の値がnullになります。私が最初にページが読み込まが、私はVIEW1でtxtbox1で何かを入力し、ボタンをクリックすると、VIEW2がロードされていると私はtxtbox1の値とを取得するコードを持って、次のコード
Public Partial Class viewstatetest
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If (Not Page.IsPostBack()) Then
MultiView1.ActiveViewIndex = 0
Else
TypedPassword = TextBox1.Text
TextBox1.Attributes.Add("value", TypedPassword)
End If
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
MultiView1.ActiveViewIndex = 1
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
MultiView1.ActiveViewIndex = 0
Label1.Text = TextBox1.Text
Response.Redirect("viewstatetest.aspx")
End Sub
Public Property TypedPassword() As String
Get
If (ViewState("TypedPassword") IsNot Nothing) Then
Return CStr(ViewState("TypedPassword"))
End If
Return ""
End Get
Set(ByVal value As String)
ViewState("TypedPassword") = value
End Set
End Property
End Class
を試してみましたview1にラベル1の値を書き込みます。そして、私がresponse.redirectをするとき、textbox1はnullになり、ビューもnullになります。
viewstateに値がないのはなぜですか?
ありがとうございます!
実際、ビューステートを使用するのはMVCにはサーバーサイドのコントロールがないため、ビューステートが '放棄されました'と言います。 –
100%が同意します。鶏と卵。 – randomfactor
Buck-AWK!そうでなければ起こっていることの良い分析、btw。 +1 –