In this article I will explain with an example, how to implement feature similar to the RegisterStartupScript and RegisterClientScriptBlock functions of ClientScript and ScriptManager classes of ASP.Net Web Forms in ASP.Net MVC.
The RegisterStartupScript and RegisterClientScriptBlock functions are used to call JavaScript function from Server Side methods.
Unfortunately in MVC, there is no such function and hence it needs to be implemented with the help of ViewBag object.
Note: For beginners in ASP.Net MVC, please refer my article ASP.Net MVC Hello World Tutorial with Sample Program example.
 
 
Controller
The Controller consists of two Action methods.
Action method for handling GET operation
Inside this Action method, simply the View is returned.
 
Action method for handling POST operation
This Action method handles the Form submission and it accepts the value of the Form element as parameter.
Note: The name of the parameter must be same as the value of name attribute specified for the Form element.
 
The name value fetched from the Form collection and if the value of name parameter is not blank (empty) then the ShowGreetings JavaScript function’s script is set in the ViewBag object.
And if the value of name parameter is blank (empty), then the ShowServerDateTime JavaScript function’s script is set in the ViewBag object.
This script present in the ViewBag object will be rendered in the View and will call the respective function once the View is loaded in the client’s Browser.
public class HomeController : Controller
{
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
 
    [HttpPost]
    public ActionResult Index(string name)
    {
        if (!string.IsNullOrEmpty(name))
        {
            ViewBag.JavaScriptFunction = string.Format("ShowGreetings('{0}');", name);
        }
        else
        {
            ViewBag.JavaScriptFunction = string.Format("ShowServerDateTime('{0}');", DateTime.Now.ToString());
        }
        return View();
    }
}
 
 
View
The View consists of an HTML Form which has been created using the Html.BeginForm method with the following parameters.
ActionName – Name of the Action. In this case the name is Index.
ControllerName – Name of the Controller. In this case the name is Home.
FormMethod – It specifies the Form Method i.e. GET or POST. In this case it will be set to POST.
The Form consists of two elements i.e. a TextBox and a Submit Button.
There are two JavaScript functions ShowGreetings and ShowServerDateTime which display the data received from the Controller in JavaScript Alert Message Box.
The functions are called later using the Html.Raw function which renders the ViewBag object inside the Script Tag.
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width"/>
    <title>Index</title>
</head>
<body>
    @using (Html.BeginForm("Index", "Home", FormMethod.Post))
    {
        <input type="text" id="txtName" name="name"/>
        <input type="submit" id="btnSubmit" value="Submit"/>
    }
    <script type="text/javascript">
        function ShowGreetings(name) {
            alert("Name: " + name);
        };
        function ShowServerDateTime(dt) {
            alert("Server Time: " + dt);
        };
    </script>
    @if (ViewBag.JavaScriptFunction != null)
    {
        <script type="text/javascript">
            @Html.Raw(ViewBag.JavaScriptFunction)
        </script>
    }
</body>
</html>
 
 
Screenshot
ShowGreetings and ShowServerDateTime JavaScript functions being called
RegisterStartupScript and RegisterClientScriptBlock Alternative in ASP.Net MVC
 
Rendered calling script of ShowGreetings JavaScript function
RegisterStartupScript and RegisterClientScriptBlock Alternative in ASP.Net MVC
 
Rendered calling script of ShowServerDateTime JavaScript function
RegisterStartupScript and RegisterClientScriptBlock Alternative in ASP.Net MVC
 
 
Downloads