如果我在浏览器中成功打开了一个新选项卡,我如何从控制器将信息写入屏幕
本文关键字:控制器 屏幕 信息 选项 一个 成功 浏览器 新选项 如果 | 更新日期: 2023-09-27 18:26:00
我的视图打开一个新的选项卡,并调用我的控制器中名为PrintConfirm()的方法:
<a href="<%= Url.Action("PrintConfirm","Dashboard", new { id = Model.Data.Id })%>" rel="external" target="_blank"><button data-role="button" ui-icon="print">Print Confirmation</button></a>
我的控制器,它创建了一条消息,显示在我打开的新选项卡中
public void PrintConfirm(id)
{
var message = "my message that I want to be able to print";
//what should I put here in order to have this message show up on the screen?
}
我不知道如何在没有HTML/view 的情况下在屏幕上显示这一点
在ASP.NET MVC中,控制器操作返回ActionResults。它们不是void
。
public ActionResult PrintConfirm(int id)
{
var message = "my message that I want to be able to print";
return Content(message);
}
或返回视图:
public ActionResult PrintConfirm(int id)
{
ViewData["Message"] = "my message that I want to be able to print";
return View();
}
并且在相应的模板(PrintConfirm.aspx
)内:
<div>
<%= ViewData["Message"] %>
</div>
更新:
根据注释,您想要显示的消息似乎包含新行('r'n
),并且您想要在结果视图中显示这些新行。
在这篇文章中,我建议您编写一个自定义的HTML助手,用<br/>
标记替换这些新行:
public static class HtmlExtensions
{
public static IHtmlString FormatMessage(this HtmlHelper htmlHelper, object message)
{
var result = string.Join(
"<br/>",
Convert
.ToString(message)
.Split(new[] { Environment.NewLine, "'r", "'n" }, StringSplitOptions.None)
.Select(x => htmlHelper.Encode(x))
);
return new HtmlString(result);
}
}
在视图中,您可以简单地使用这样的帮助程序:
<%= Html.FormatMessage(ViewData["Message"]) %>