Почему webmethod не вызывается внутри updatepanel в C#
Я хочу вызвать веб-метод из json,но веб-метод не вызывает из json при использовании панели обновления в форме.Я должен использовать панель обновления.
Вот мой код клиентской стороны
<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>
Код На Стороне Сервера
[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) { } }
Теперь обратной передачи части
protected override void Render(System.Web.UI.HtmlTextWriter writer) { ClientScript.RegisterForEventValidation("hdText", "JavaScript"); base.Render(writer); } protected void hdText_Click(object sender, EventArgs e) { }
Что я уже пробовал:
Я попробовал использовать postback со стороны клиента.
Любая помощь будет очень признательна.
Пожалуйста.... есть ответ
Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)
Вы отладили? Попадает ли он в метод с помощью отладчика?
priya231
На самом деле событие нажатия кнопки не срабатывает.Я попробовал это сделать, изменив идентификатор кнопки, как проверено в firefox.
Вместо $("[id*=btnSave]"). bind ("click", функция () {
Я использую $("#MainContent_btnSave"). click(функция () {
но не преуспел.Любая помощь с вашей стороны будет высоко оценена
Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)
Проверьте мой ответ.
F-ES Sitecore
Вы не опубликовали достаточно, чтобы дать какую-либо конкретную помощь, где находится кнопка сохранения и где появляется панель обновления? Вы также можете использовать страницы master\content, которые также меняют все.
Javascript работает на clink, поэтому просмотрите источник вашей страницы и убедитесь, что есть элемент, соответствующий селектору для вашего события click, так как .net изменит идентификаторы ваших элементов, и убедитесь, что вы не пытаетесь прикрепить событие click до того, как кнопка появится в разметке, т. е. убедитесь, что ваш тег скрипта находится в нижней части страницы.
F-ES Sitecore
Вы должны обновить исходный вопрос с помощью кода и убедиться, что он правильно отформатирован. Не могу сказать точно, но если проблема в том, что щелчок не работает после того, как вы сделаете обновление, то посмотрите на этот.
priya231
Спасибо за ссылку, которую вы мне предоставили.Это помогло мне найти решение.