簡體   English   中英

如何使用ASp.net MVC3插入數據庫后顯示“成功插入”等警報消息

[英]How to show Alert Message like “successfully Inserted” after inserting to DB using ASp.net MVC3

如何使用MVC編寫用於顯示警報消息的代碼:“成功注冊”,用戶數據存儲在數據庫中之后

我使用的是Asp.Net MVC3,C#,Entity Model。

嘗試使用TempData

public ActionResult Create(FormCollection collection) {
  ...
  TempData["notice"] = "Successfully registered";
  return RedirectToAction("Index");
  ...
}

然后,在索引視圖或母版頁等中,您可以執行以下操作:

<% if (TempData["notice"] != null) { %>
  <p><%= Html.Encode(TempData["notice"]) %></p>
<% } %>

或者,在Razor視圖中:

@if (TempData["notice"] != null) {
  <p>@TempData["notice"]</p>
}

從MSDN引用(截至2014年頁面已不存在, 此處存檔副本):

action方法可以在調用控制器的RedirectToAction方法調用下一個操作之前將數據存儲在控制器的TempDataDictionary對象中。 TempData屬性值存儲在會話狀態中。 在設置TempDataDictionary值之后調用的任何操作方法都可以從對象獲取值,然后處理或顯示它們。 TempData的值一直存在,直到讀取或會話超時為止。 以這種方式保持TempData可以啟用重定向等方案,因為TempData中的值可以在單個請求之外使用。

執行此操作的“最佳”方法是在更新成功后在視圖對象上設置屬性。 然后,您可以在視圖中訪問此屬性並相應地通知用戶。

已經說過可以通過做這樣的事情從控制器代碼觸發警報 -

public ActionResult ActionName(PostBackData postbackdata)
{
    //your DB code
    return new JavascriptResult { Script = "alert('Successfully registered');" };
}

您可以在此問題中找到更多信息 - 如何使用MVC3控制器顯示“消息框”

就個人而言,我會選擇AJAX。

如果您無法切換到@Ajax...助手,我建議您在模型中添加幾個屬性

public bool TriggerOnLoad { get; set; }
public string TriggerOnLoadMessage { get; set: }

將您的視圖更改為強類型模型

@using MyModel

在返回View之前,如果成功創建,請執行類似的操作

MyModel model = new MyModel();
model.TriggerOnLoad = true;
model.TriggerOnLoadMessage = "Object successfully created!";
return View ("Add", model);

然后在您的視圖中,添加此項

@{
   if (model.TriggerOnLoad) {
   <text>
   <script type="text/javascript">
     alert('@Model.TriggerOnLoadMessage');
   </script>
   </text>
   }
}

當然在標簽內你可以選擇做任何你想做的事情,事件聲明一個jQuery就緒函數:

$(document).ready(function () {
   alert('@Model.TriggerOnLoadMessage');
});

請記住在成功發出警報后重置模型屬性。

關於MVC的另一個好處是你可以為所有這些定義一個EditorTemplate,然后通過以下方式在你的視圖中使用它:

@Html.EditorFor (m => m.TriggerOnLoadMessage)

但是如果你想構建這樣的東西,也許最好定義你自己的C#類:

class ClientMessageNotification {
    public bool TriggerOnLoad { get; set; }
    public string TriggerOnLoadMessage { get; set: }
}

並在模型中添加ClientMessageNotification屬性。 然后為ClientMessageNotification類編寫EditorTemplate / DisplayTemplate,您就完成了。 很好,干凈,可重復使用。

小編輯

嘗試添加

return new JavascriptResult() { Script = "alert('Successfully registered');" };

代替

return RedirectToAction("Index");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM