为什么在C#中的updatepanel内部没有调用webmethod
问题描述:
我想从json调用web方法,但是当在表单中使用更新面板时,web方法不会从json调用。我必须使用更新面板。
这是我的客户端代码
I Want call web method from json,but web method does not call from json,when using update panel in form.I have to use update panel.
Here is my code of client side
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="http://cdn.jsdelivr.net/json2/0.1/json2.js"></script>
<script type="text/javascript">
$(function () {
$("[id*=btnSave]").bind("click", function () {
var event1 = {};
event1.EventDate = $("[id*=txtEventDt]").val();
event1.Description = $("[id*=txtEventDesc]").val();
$.ajax({
type: "POST",
url: "Default3.aspx/SaveEvent",
data: '{event1: ' + JSON.stringify(event1) + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
$find("mpe").hide();
clear();
__doPostBack('hdText', 'JavaScript');
}
});
return false;
});
});
//==== Method to clear input fields
function clear() {
$("#txtEventDt").val("");
$("#txtEventDesc").val("");
}
</script>
服务器端代码
Server Side Code
[WebMethod]
[ScriptMethod]
public static void SaveEvent(Event event1)
{
try
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("INSERT INTO Event VALUES(@EventDate, @Description)"))
{
cmd.CommandType = CommandType.Text;
Default3 obj = new Default3();
string eventdate=obj.changeYYYYMMDD(event1.EventDate.ToString());
cmd.Parameters.AddWithValue("@EventDate", eventdate);
cmd.Parameters.AddWithValue("@Description", event1.Description);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
catch (Exception ex)
{
}
}
现在回发部分
Now the postback part
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
ClientScript.RegisterForEventValidation("hdText", "JavaScript");
base.Render(writer);
}
protected void hdText_Click(object sender, EventArgs e)
{
}
我尝试了什么:
我尝试过使用客户端的回发。
任何帮助都将非常感激。
请....回复
What I have tried:
I have tried by using postback from client side.
Any help will be very appreciated.
Please.... have a reply
答
( function (){
( [id * = btnSave])。bind( click, function (){
var event1 = {};
event1.EventDate =
("[id*=btnSave]").bind("click", function () { var event1 = {}; event1.EventDate =
( [id * = txt EventDt]跨度>)VAL();
event1.Description =
("[id*=txtEventDt]").val(); event1.Description =