ユーザーメッセージの受信トレイとしてモーダルポップアップがあります。ユーザーがリンクをクリックしてメッセージを表示すると、jqueryを使用してメッセージが表示されます。メッセージ表示の周りのナビゲーションはすべてクライアント側であり、素晴らしくスムーズです。
私が解決しようとしている問題は、ユーザーがメッセージリンクをクリックしてメッセージを表示した後、これを反映するようにデータベースを更新することです。これを行うサーバー側のc#メソッドがあり、ajaxを使用してアクセスしようとしています。それ以外の方法では、ページがリロードされ、メッセージモーダルが消えます。
私の試みは、更新パネルにボタンを配置することでした。これは機能し、完全なポストバックを引き起こさず、モーダルはアップしたままになります。したがって、次のステップは、メッセージを表示する関数が実行されたときにjqueryからボタンを呼び出すことでした。今では、部分的ではなく、全ページの投稿を行います。
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:Button runat="server" ID="UpdateReadStatusButton" Text="test" OnClick="UpdateReadStatus"/>
</ContentTemplate>
</asp:UpdatePanel>
それから私はそれをjqueryで呼び出します
function ShowMyPopup(message, subject, sender, reciever, id) {
ShowPopup(message, subject, sender, reciever, id);
$('#ctl00_UpdateReadStatusButton').click();
}
私はajaxの別の方法を使用しようとしましたが、サーバー側のコードを簡単に静かに呼び出すことができ、デプロイするまでは非常にうまく機能しました。Michealschwarzの.netajaxラッパーを試しましたが、展開後も成功しませんでした。
問題は、サイトがgodaddy共有ホスティングプランでホストされており、私が試した他のajaxの方法がサーバーで機能しないことです。現在、最新バージョンのAjaxControlToolKitを使用していますが、これはWebフォームアプリであるため、MVCの簡単なソリューションは機能しません。私は一般的にajaxとWeb開発に非常に慣れていないので、どんな助けでも大歓迎です。
また、jqueryでbuttons commandArgument属性を設定することも考えていました。これは、メッセージIDがあり、ポストバックサーバー側で取得できるためです。
ビジュアルが必要な場合は、On2Wheels.caを参照し、ユーザーHelpUserとパスワードHelpUser(大文字に注意)を使用してログインし、右側のメールアイコンをクリックしてください。
私はajaxへのJqueryの方法を試しました:
function UpdateRead() {
$.ajax({
type: "POST",
url: "Default.aspx/UpdateReadStatus",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
//do something
}
});
}
ac#メソッドで:
[System.Web.Services.WebMethod]
protected void UpdateReadStatus(string id)
{
var a = id;
}
MVCを使用している場合は、URLでのみメソッドを呼び出すことができると思いました。また、これはマスターページにあるため、すべてのページに表示されます。