如果我在浏览器中成功打开了一个新选项卡,我如何从控制器将信息写入屏幕

本文关键字:控制器 屏幕 信息 选项 一个 成功 浏览器 新选项 如果 | 更新日期: 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"]) %>