Jason94
Jason94

Reputation: 13610

Print to web directly from the controller?

I have this controller function that returns cpu stats:

        public ActionResult GetStats()
        {
            Random rand = new Random();
            ViewData["cpu_temp"] = rand.Next(0, 100) + "%";

            return View();
        }

And with a view it works 100%. Bu tI'm wondering if I could shorten the process, and just do something like:

        public ActionResult GetStats()
        {
            Random rand = new Random();

            something.writeline(rand.Next(0, 100) + "%");
        }

Just so I can create controllers and not care about views for simple simple simple output :D

FIX, after a tip by Jamie Dixon i came up with this solution:

        public ActionResult GetStats()
        {
            Random rand = new Random();
            ViewData["cpu_temp"] = rand.Next(0, 100) + "%";

            return Json(ViewData, JsonRequestBehavior.AllowGet);
        }

Works as intended :D

Upvotes: 0

Views: 1145

Answers (2)

Charles Ouellet
Charles Ouellet

Reputation: 6518

That would have been easier to do:

public ActionResult GetStats()
{
   Random rand = new Random();

   return Content(rand.Next(0, 100) + "%");
}

Upvotes: 1

Jamie Dixon
Jamie Dixon

Reputation: 53991

It all depends on where you want to view the data.

If you want to view the data in your web browser through a web page then you'll need to return a view.

If you just want to see the data you could output it to the debug console with

Debug.WriteLine(mystring);

Alternatively you could send it to the browser in any number of formats that can be downloaded by the user (JSON, XML, Text file) that won't require a view.

The key point here is that if you want the user to view the information in their browser in a way that's likely to show up for them, you're going to want to use a View.

UPDATE

To return a JSON object you can simply return JSON(object).

return JSON(new {foo = "foo", bar = "bar"});

Upvotes: 1

Related Questions