Sanjeev
Sanjeev

Reputation: 281

Acessing ViewData in javascript?

I want to access view data In Java script in following code

public virtual ActionResult Edit(MyModel _MyModel)
{
    //some Code

    if (true..)
    {
            ViewData["Messages"] = "Data Updated Sucessfully";
    }
        else
    {
        ViewData["Messages"] = "you cannot Updated data";
    }

    return View();
}

In javascript

function SaveData() {
    $("#btnSave").click(function () {
        //          $('#divLoadImage').show();
        //            $('#divOverlay').show();
        //   debugger;
        $.ajax({
            type: "POST",
            url: "Admin/Edit/",
            data: "",
            complete: function () {
                alert(ViewData["Messages"]);
            }
        });
    });
}

it give me no value in alert..

Upvotes: 0

Views: 7361

Answers (1)

Darin Dimitrov
Darin Dimitrov

Reputation: 1038780

You need to encode it using for example the JavaScriptSerializer class:

function SaveData() {
    $("#btnSave").click(function () {
        $.ajax({
            type: "POST",
            url: "Admin/Edit/",
            data: "",
            complete: function () {
                alert(@Html.Raw(new JavaScriptSerializer().Serialize(ViewData["Messages"])));
            }
        });

    });
}

or use simple quotes but be careful as this might break if the message contains quote so I wouldn't recommend you this:

alert('@ViewData["Messages"]');

Upvotes: 4

Related Questions