raja
raja

Reputation: 93

modal popup from Controller .NET MVC

In my Index view.I have a Table with action link. In Action link I am passing some arguments on the base of arguments I execute query if query result is null I want to show the modal present in the Index View. My Table is.

@foreach(var j in Model)
{
   <tr>
       <td>@Html.DisplayFor(modelItem => j.job_title)</td>
       <td>@Html.DisplayFor(modelItem => j.job_description)</td>
       <td>@Html.DisplayFor(modelItem => j.apply_before)</td>
       <td>@Html.ActionLink( "Apply","applyingjobs","Student",                        
            new {                                                   
                id= @TempData["data"]
                },
             null
                 )

       </td>  

    </tr>
}

My contoller Function which is receiving passed parameter is.

    public ActionResult applyingjobs(String id)
    {
        SqlConnection con = new SqlConnection("xxxxxxxxxxx");
        SqlCommand cmd = new SqlCommand();
        con.Open();
        cmd.CommandText = "select count(*)from Users where id='" + id + "'and " + "type = " + 2 + " and exe!= null and qua!= null" ;
        cmd.Connection = con;
        Int32 countnamefieldadd = (Int32)cmd.ExecuteScalar();
        if (countnamefieldadd == 0)
        {
           //here I want to show modal which is present in Index Page
        }
        else
        {
            return RedirectToAction("Index", "Student", new
            {
                id = id,
            });

        }

        return RedirectToAction("Index", "Student", new
        {
            id = id,
        });          
    }

My Modal Code is

           <div id="modal_dialog" style="display: none">


              //  Modal content

                 </div>

Script to call Modal is

       <script type="text/javascript">
 $(function () {

         $("#modal_dialog").dialog({
             title: "Add Record",

             open: function (type, data) { $(this).parent().appendTo("form"); },
             modal: true
         });
         return false;
 })
</script>

Upvotes: 1

Views: 11827

Answers (1)

Archana Parmar
Archana Parmar

Reputation: 578

You can use Tempdata in your controller to retain the value and use it as a flag to check whether query returns records or not.

Try this. I hope it helps :)

HTML

@Html.ActionLink("Apply", "applyingjobs", "Employee")

<div>
    <div id="myModal" class="modal fade" role="dialog">
        <div class="modal-dialog">

            <!-- Modal content-->
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                    <h4 class="modal-title">Modal Header</h4>
                </div>
                <div class="modal-body">
                    <p>Some text in the modal.</p>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                </div>
            </div>

        </div>
    </div>
</div>

Script

  $(document).ready(function ()
{
    if ('@TempData["value"]' != "" || '@TempData["value"]' != null)
    {
        if ('@TempData["value"]' == "No Records")
        {
            $("#myModal").modal('show');
        }
        else {
            $("#myModal").modal('hide');
        }
    }
});

Controller

public ActionResult applyingjobs()
    {
        var c = Repository.SelectAll().ToList();
        if (c.Count() > 0)
        {
            return RedirectToAction("Create");
        }
        else
        {
            TempData["value"] = "No Records";
            return RedirectToAction("Create");
        }
    }

Upvotes: 4

Related Questions