5

I am having a problem accessing the ViewData object through javascript.

I have set the ViewData object on the controller and on document.ready event of the view i am trying to see the contents of that same ViewData object like so:

     var test = <%= ViewData["NAME"].ToString() %>;
     alert(test);

I don't get an alert message after this and none of my script after this statement will run. I am assuming this script is invalid thus killing everything afterwards. I have tried a few different variations of this same script without any luck.

What am i missing here?

Thanks in advance, Billy

Billy Logan
  • 2,833
  • 16
  • 43
  • 49

2 Answers2

14

Try adding some quotes around the output:

var test = '<%= ViewData["NAME"].ToString() %>';
alert(test);

Edit:

I notice you're using NAME for the key; could this name ever have a single quote in it? If it's possible that any value will ever contain one, you will want something like this instead so your page doesn't break again (although technically this seems to be more of a job for the controller or model):

var test = '<%= ViewData["NAME"].ToString().Replace("'", "\\'") %>';
alert(test);
John Rasch
  • 62,489
  • 19
  • 106
  • 139
  • You got it. Wonder why the examples i saw didn't have those quotes. Thanks. – Billy Logan Mar 03 '10 at 20:39
  • I think the examples you saw assumed that you write your scripts in the View file directly (i.e. within ` – digawp May 15 '15 at 03:03
6

try

var test = '<%= ViewData["NAME"].ToString() %>';
alert(test);

(notice the quotes around <%= %>)

Marek Karbarz
  • 28,956
  • 6
  • 53
  • 73