我的视图中有一个复选框,其中包含一个onclick事件,该事件将复选框ID发送到控制器中的操作结果(使用Ajax)。但是,在控制器中传递的值上运行断点后,当我单击复选框时,似乎没有任何反应吗?为什么会这样?
我的复选框:
@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" />
}
将值发送到我的ActionResult的jQuery
function sendCheckId(checkedId) {
var sentId = checkedId;
$.post("Items/ItemsEdit/", { sendIdToAction: sentId })
}
最后是我的“结果”控制器中的ActionResult:
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();
}
我要执行的操作是传递“ Remember”的值,如果我正确的话,则取决于复选框是否被选中,该值为true或false。
答案 0 :(得分:4)
因为您拥有bool记忆参数,所以需要发送记忆参数,并且URL缺少“ /”,因此将函数更新为
function sendCheckId(checkedId) {
var sentId = checkedId;
$.post("/Items/ItemsEdit/", { sendIdToAction: sentId, Remember: false });
}
如果您不想在POST方法中放置Remember
参数,则可以在操作控制器中将默认值设置为
public ActionResult ItemsEdit(string sendIdToAction, bool Remember = false)