简体   繁体   中英

Why is my on click event not working? (ASP.NET MVC)

I have a checkbox in my view, with an onclick event which sends the checkboxes ID to an action result in my controller (using Ajax). However, after running a breakpoint on the passed value within my controller, it seems as thou nothing is happening when i click on the checkbox? Why could this be?

My checkbox:

@using (Html.BeginForm("ItemsEdit", "Items", FormMethod.Post))
{

            <input id = "@dataLineItem.Split(Model.ItemList.delimiterChar)[0]" type = "checkbox" value = "true" name = "Remember" onclick = "sendCheckId(this.id)"/>

            <input type = "hidden" value = "false" name = "Remember" />

}

Jquery for sending the value to my ActionResult:

function sendCheckId(checkedId) {
        var sentId = checkedId;
        $.post("Items/ItemsEdit/", { sendIdToAction: sentId })
    }

And finally my ActionResult within my "Items" controller:

public ActionResult ItemsEdit(string sendIdToAction, bool Remember)
{
            string itemCheck = "true";
            var path = "~/App_Data/Item.txt";
            var originalLines = System.IO.File.ReadAllLines(Server.MapPath(path));
            var updatedLines = new List<string>();

            foreach (var line in originalLines)
            {
                string[] infos = line.Split(',');

                if(infos[0] == sendIdToAction)
                {
                    infos[3] = Remember.ToString();
                }

                updatedLines.Add(string.Join(",", infos));
            }

            System.IO.File.WriteAllLines(Server.MapPath(path), updatedLines);

            return View();
}

What i am trying to do is pass the value of "Remember", which if i am correct, would be either true or false depending on whether the checkbox is ticked or not.

Because you have bool Remember parameter, you need send Remember parameter, and your URL miss "/", update your function as

function sendCheckId(checkedId) {
        var sentId = checkedId;
        $.post("/Items/ItemsEdit/", { sendIdToAction: sentId, Remember: false });
}

If you don't want to put Remember parameter in POST method, you can set default value in action controller as

public ActionResult ItemsEdit(string sendIdToAction, bool Remember = false)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM