我有一个Intent intent = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(getBaseContext().getPackageName());
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
我在此操作中有一个操作AccountController
我正在使用YNHHConsentForm
重定向到另一个视图。现在我想在Default页面的Index页面上显示一条消息。我尝试使用RedirectToAction("Index", "Default")
或ViewBag
传递值,但它仍为ViewData
,我无法在索引上使用其值。
的AccountController
null
指数(默认)
public ActionResult YNHHConsentForm(YNHHFormVM model)
{
if (result == 0 || isSuccess == false)
{
model.FormSubmissionMessage = "Something went wrong please try again";
return View(model);
}
else
{
SessionItems.IsAuthorizationFormFilled = true;
//ViewBag.FormSubmissionMessage="Form submitted successfully";
ViewData["FormSubmissionMessage"] = "Form submitted successfully";
return RedirectToAction("Index", "Default");
}
}
我第一次使用 @if (ViewData["FormSubmissionMessage"] !=null)
{
<div class="alert alert-success">
ViewData["FormSubmissionMessage"].ToString()
</div>
}
和ViewBag
,因此无法弄清楚我做错了什么。
答案 0 :(得分:3)
您需要使用TempData
。在YNHHConsentForm()
方法
TempData["FormSubmissionMessage"] = "Form submitted successfully";
return RedirectToAction("Index", "Default");
并使用Index()
方法访问它(并将其添加到(例如)ViewBag
,以便您可以在视图中访问它。
ViewBag.MyMessage = TempData["FormSubmissionMessage"];
并在视图中
<div class="alert alert-success">@ViewBag.MyMessage</div>
有关ViewData
ViewBag
与TempData
之间差异的说明,请参阅this answer
附注:TempData
仅持续一次重定向,因此如果用户刷新浏览器,则不会再次生成该消息。您可以使用.Keep()
或.Peek()
来解决此问题(如果有关键请参阅this answer了解详情)
答案 1 :(得分:2)
为了补充@ StephenMueke的答案,我通常会为您正在使用的场景创建一对组件(显示系统确认)。它包括:
静态类看起来像这样:
public class Alert
{
public static string Error = "alert-error alert-danger";
public static string Info = "alert-info";
public static string Warning = "alert-warning";
public static string Success = "alert-success";
public static string[] All = new string[]{ Error, Info, Warning, Success };
}
基本上,这些是Bootstrap警报类,但它们非常通用,可以在没有Bootstrap的情况下工作。 Alert.Error
值包含两个“类”,使其与Bootstrap的版本2和版本3兼容。
部分视图检查TempData
Alert
值,如果找到则生成Bootstrap警报:
@foreach (string key in Alert.All)
{
if (TempData.ContainsKey(key))
{
<div class="alert @key">
<button type="button" class="close" data-dismiss="alert"><i class="fa fa-fw fa-times"></i></button>
@Html.Raw(TempData[key])
</div>
}
}
我使用Html.Raw
以便我可以在邮件中包含标记,如果我想强调部分邮件:
TempData.Add(Alert.Success, "<b>Thank you!</b> Form submitted successfully!");
将呈现为:
谢谢!表单已成功提交!