Maciej Miśkiewicz
Maciej Miśkiewicz

Reputation: 412

MVC button onClick

I am making my MVC application. How do I create a button in my view that a click on it will run a function from controller. I would also like to pass data from the view that the button is in. But I do not want to open a different view. I just want to run a function - Button "save to file" would save the table from the view into a file - would open a Directory browser and save a file on a disk.

Upvotes: 0

Views: 20243

Answers (2)

Maciej Miśkiewicz
Maciej Miśkiewicz

Reputation: 412

Apparently, the correct solution was to use

@Html.ActionLink("weekly - PDF", "GenerateTable", "Account", new { group_id = Model.group_id, class_id = Model.class_id, type = 1 }, null)  

And in GenerateTable method just return a proper file.

Upvotes: 1

Ankit K
Ankit K

Reputation: 1326

This will be done with the help of ajax request from your view. You need to add a simple button on your view and call a jquery function on its onclick event like this:

<input type="button" value="save to file" onclick="saveToFile()" />

Then you can create saveToFile function to send ajax request like this: here you can create your data as per your need of fields you want to post to controller. I just adding firstField and secondField for demo:

<script type="text/javascript">
    var data = { "firstField" : "value1", "secondField": "value2" };
    function saveToFile() {
        $.ajax({
            url: "/ControllerName/ActionName",
            type: "POST",
            contentType: "application/json",
            data: JSON.stringify(data),
            success: function (data) {

            },
            error: function (xhr) {
                console.log(xhr);
            }
        });
    });
</script>

Your action method will be like this:

[HttpPost]
public ActionResult UseShippingAddress(string firstField, string secondField)
{
    //write your logic here to save the file on a disc            
    return Json("1");
}

Upvotes: 1

Related Questions