Search code examples
c#asp.net-mvc

How to increase value on button click with controller


I want to be able to increase the criteria number on button click

HTML markup:

<div class="criteria-header">
    <span class="criteria-value">Criteria @ViewData["criteriaNo"]</span>
    <div id="criteria-image">
        <img src="~/images/red-cross.png" style="width: 100%" />
    </div>
</div>

<input type="submit" value="Add new criteria" class="btn background-gold btn-180 btn-login col-2 criteria-btn" formaction="AddCriteria"/>
<input type="submit" value="Create" class="btn background-gold btn-180 btn-login col-2 criteria-btn" formaction="Create"/>

When I click on "Add criteria", I need it to increase the criteria number to 2,3,4 and so on.

But because in the controller I set the criteria number to 1 every time I click the button it will run through the controller and keep resetting the data.

public class JudgeController : Controller
{
    int criteriaNo = 1;

    public ActionResult JudgeCriteria()
    {
        ViewData["ShowCriteria"] = showCriteria;
        ViewData["criteriaNo"] = criteriaNo;
        Console.WriteLine(criteriaNo);
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult AddCriteria()
    {
        criteriaNo += 1;
        showCriteria = true;
        return RedirectToAction("JudgeCriteria");
    }
}

Solution

  • Pass your criteria number from client side so you will be able to add it subsequently. And

     [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult AddCriteria(int number = 1)
            {
                number += 1;
                showCriteria = true;
                return RedirectToAction("JudgeCriteria", new { criteriaNo = number});
            }
    
    public ActionResult JudgeCriteria(int criteriaNo)
            {
                ViewData["ShowCriteria"] = showCriteria;
                ViewData["criteriaNo"] = criteriaNo;
                Console.WriteLine(criteriaNo);
                return View();
            }
    

    After this pass your criteria from frontend and you will be good to go!