0

jqueryを使用してこのアクションを呼び出します

public ActionResult Delete(int Id){
   Schedule schedule = context.Schedules.FirstOrDefault(s => s.Id == Id);
   try{
       context.Schedules.Remove(schedule);
       context.SaveChanges();
       TempData["Message"] = "Succesfully removed schedule.";
       return Content(Boolean.TrueString);
   }catch(Exception ex){
       TempData["Message"] = "Something went wrong";
       return Content(Boolean.FalseString);
   }

}

私の見解では、マスターからのTempData["Message"]を処理するdivがあります

<div id="messages">
 <% if(ViewContext.TempData["Message"] != null { %>
     <div class="alert">
        <%: ViewContext.TempData["Message"] %>
     </div>
  <% } %>
</div>

これはまさに私のjqueryがどのように見えるかです。Boolean.TrueString/FalseStringリターンを使用します。私はまだアクションを使ってjqueryを学び始めているので、それが正しい方法かどうかはよくわかりません。

http://ricardocovo.com/2010/09/02/asp-mvc-delete-confirmation-with-ajax-jquery-ui-dialog/

基本的に、私の目標は、エラーを表示したり、間違っていることや手順を完了するために実行する必要のある指示をユーザーに通知したりできるようにすることです。リターンタイプとしてJSONを使用することを考えていましたか?どうやって扱えばいいのかよくわかりません。

任意の推奨事項は非常に高く評価されています。

4

3 に答える 3

0

この関数をjQueryで呼び出すときは、非同期と呼んでいます。これはAJAXによって行われ、JSONでメッセージを返す方がはるかに簡単です。

Response.Write('{"message":"foo"}');

jQueryでは、ajax-requestが終了したときにダイアログを呼び出す必要があります。

$.ajax({
  url: "test.aspx"
}).done(function(data) { 
  $(".alert").text(data.message);
  $("#messages").dialog();
});
于 2012-08-03T05:59:11.477 に答える
0

このシナリオでは、TempDataの代わりにViewDataを使用する必要があります。TempDataは、リクエスト間で何かを一時的に保存するために使用されます。そして、それは舞台裏でSessionオブジェクトを使用します。Post->Redirect->Getのように。

あなたの場合、同じリクエストでデータを使用します。したがって、TempDataは必要ありません。

于 2012-08-03T05:56:33.883 に答える
0

ajax呼び出しを使用しています。ビューが再び完全にレンダリングされることはありません。メッセージを表示できるようにするには、たとえばjsonとしてメッセージを返し、jqueryコールバックで処理する必要があります。

于 2012-08-03T05:55:06.060 に答える