[英]how to show Alert messages in Asp.net MVc3 (ex: User Created Successfully)
[英]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.