हमारे पास एक चेकबॉक्स है जो प्रारंभ में अक्षम और चेक किया गया है। इसके बाद क्लाइंट पक्ष पर जावास्क्रिप्ट के माध्यम से सक्षम किया जाता है। यदि उपयोगकर्ता बॉक्स को अनचेक करता है और बटन को पोस्टबैक करने के लिए बटन दबाता है, तो चेकबॉक्स की स्थिति सर्वर की तरफ चेक की जाती है। यह स्पष्ट रूप से अवांछनीय व्यवहार है। यहाँ एक उदाहरण है।पोस्टबैक पर ASP.Net चेकबॉक्स मान गलत है?
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="testcb.aspx.cs" Inherits="ESC.testcb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<script type="text/javascript">
function buttonClick() {
var cb = document.getElementById('<%= CheckBox1.ClientID %>');
cb.disabled = false;
cb.parentNode.disabled = false;
}
</script>
<div>
<asp:CheckBox ID="CheckBox1" runat="server" Checked="true" Enabled="false" />
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="buttonClick(); return false;" />
<asp:Button ID="Button2" runat="server" Text="Button2" OnClick="button2Click" />
</div>
</form>
</body>
</html>
और सर्वर साइड कोड:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace ESC
{
public partial class testcb : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void button2Click(object sender, EventArgs e)
{
string h = "";
}
}
}
तो हम "स्ट्रिंग ज" लाइन में तोड़ने के लिए और CheckBox1.Checked का मूल्य की जाँच करें। यह सच है, भले ही यह फ़ॉर्म पर अनचेक किया गया हो।
इसका कारण यह है अपने पृष्ठ के मद्देनजर राज्य अद्यतन हो रही नहीं है जब आप सेट किया गया है पीछे कोड से अपने नियंत्रण की गुण। –
सर्वर नियंत्रण के बजाय एक HTML नियंत्रण का उपयोग करें और मुझे विश्वास है कि आपकी समस्या हल हो गई है। –
@ कामरान, व्यूस्टेट समस्या नहीं है। –