2
votes

I tried to add a shared view to Views/Shared folder which I need to return some plain text values in some cases. Here is my shared view TextPlainView:

@model string
@{
    Layout = null;
    Response.ContentType = "text/plain";
}
@Model

I tried to use it from a controller this way:

public ActionResult GetInfo(bool plain)
{
    //Some code to prepare data
    string result="Some data";
    if (plain)
        return View("TextPlainView", result);
    else
        return View(result);
}

I want to use this view across all controllers, so I want it to be shared.

I got this error:

The view 'TextPlainView' or its master was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/Orders/TextPlainView.aspx ~/Views/Orders/TextPlainView.ascx ~/Views/Shared/TextPlainView.aspx ~/Views/Shared/TextPlainView.ascx ~/Views/Orders/0.master ~/Views/Shared/0.master ~/Views/Orders/TextPlainView.cshtml ~/Views/Orders/TextPlainView.vbhtml ~/Views/Shared/TextPlainView.cshtml ~/Views/Shared/TextPlainView.vbhtml ~/Views/Orders/0.cshtml ~/Views/Orders/0.vbhtml ~/Views/Shared/0.cshtml ~/Views/Shared/0.vbhtml

1

1 Answers

3
votes

If you want to return plain text it would probably be better to use a ContentResult. This is specifically for returning raw content without going through a view engine and by default it has a content type of text/html.

See https://stackoverflow.com/a/553952/493650 for more details.