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

C# 如果我已在浏览器中成功打开新选项卡,如何从控制器将信息写入屏幕?,c#,asp.net-mvc-2,C#,Asp.net Mvc 2,打开新选项卡并调用控制器中名为PrintConfirm()的方法的我的视图: 我不知道在ASP.NET MVC控制器操作返回ActionResults中,如果没有HTML/view,如何在屏幕上显示此操作。它们不是void public ActionResult PrintConfirm(int id) { var message = "my message that I want to be able to print"; return Content(message); }

打开新选项卡并调用控制器中名为PrintConfirm()的方法的我的视图:


我不知道在ASP.NET MVC控制器操作返回ActionResults中,如果没有HTML/view,如何在屏幕上显示此操作。它们不是
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
):

在视图中,您可以像这样简单地使用此帮助器:

<%= Html.FormatMessage(ViewData["Message"]) %>


在没有HTML/View的情况下,您希望如何在asp.net-MVC中显示内容?!我希望它类似于pdf,而不需要下载。如果我不能这样做,我将如何让我的消息显示在视图中?这真的没有意义。从技术上讲,您写入浏览器的所有内容都是“下载”的。无论如何,浏览器必须知道如何显示内容,无论是PDF、html还是其他格式。没有别的办法了。这正是我所需要的!!(第一个是我用过的)非常感谢@格多龙,是的,你在做梦。这是一场噩梦:-)我现在唯一的问题是它无法识别换行符?@user1229309,什么是无法识别的?您收到了错误消息还是什么?在HTML中,您可以使用

标记在输出的
元素中创建换行符或分组。如果您的邮件中只有
\r\n
新行,则必须用

标记替换这些行。自定义HTML帮助程序可能适合在视图中完成此任务。消息会显示在屏幕上,但当我执行“消息一\n消息二”时,它会打印“消息一消息二”
public ActionResult PrintConfirm(int id)
{
    ViewData["Message"] = "my message that I want to be able to print";
    return View();
}
<div>
    <%= ViewData["Message"] %>
</div>
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"]) %>