したがって、ビューにテーブルがあり、次のスクリプトを使用して、データベースを更新するコントローラーにajaxデータを送信します。
$('.save-table').on('click', function () {
var tr = $(this).parents('tr:first');
var PredefName = tr.find("#PredefName").val();
var PredefDescription = tr.find("#PredefDescription").val();
var PredefID = tr.find("#PredefID").html();
tr.find("#lblPredefName").text(PredefName);
tr.find("#lblPredefDescription").text(PredefDescription);
tr.find('.edit-mode, .display-mode').toggle();
$.ajax({
url: '/PredefinedViews/Update/',
data: JSON.stringify({ pID: PredefID, pName: PredefName, pDescript: PredefDescription }),
type: 'POST',
contentType: 'application/json; charset=utf-8',
error: function (event, jqxhr, settings, exception) {
alert("something went wrong")
if (jqxhr.status == 401) {
alert("session expired!");
}
},
success: function (event, jqxhr, settings, exception) {
alert("database updated!");
}
});
});
したがって、5分短くする必要のあるセッションがあり、正常にセットアップできました。セッションの有効期限が切れたことをユーザーに通知する必要がありますが、セッションの有効期限が切れた後はエラーメッセージがトリガーされません。それはしかしん常に何がデータベースに保存されていない場合でも、成功メッセージをトリガします。だから私の質問は、どうすればajaxエラーをトリガーできますか?
EDIT1これが私のコントローラーのメソッドです:
[HttpPost]
[ValidateInput(false)]
public ActionResult Update(int pID, string pName, string pDescript)
{
using (PanSenseEntities context = new PanSenseEntities())
{
tblPredefineView existingPredefineView = context.tblPredefineViews.Find(pID);
existingPredefineView.Name = pName;
existingPredefineView.Description = pDescript;
context.SaveChanges();
}
return Json(JsonRequestBehavior.AllowGet);
}
EDIT2セッションが期限切れになると、コントローラーにも到達しないことに気づきました。私は今ここで困惑しています...
これは同様の質問です
そこからのコード、@ Darin Dimitrovは、カスタムの承認属性を作成し、不正なリクエストを処理することを提案しています。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.Result = new JsonResult
{
Data = new
{
// put whatever data you want which will be sent
// to the client
message = "sorry, but you were logged out"
},
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加