【发布时间】:2019-03-08 19:52:36
【问题描述】:
我正在尝试使用 Ajax.BeginForm,因此我可以将复选框的值传递给我的控制器操作。
我正在使用@Ajax.ActionLink,但我无法获取新引入的复选框的值,所以我想继续使用 Ajax.BeginForm。
由于@Ajax.ActionLink 在视图中工作,我假设 Ajax 工作正常,所以我可以排除这种情况。
这是我尝试过的几个选项。当我将鼠标悬停在按钮上时,它们都显示我的网页的 URL,而不是控制器和操作的 URL。当我点击按钮时,页面基本上会刷新,而不是在 PublicOffers 控制器中调用 GetCode 操作。
非常感谢任何帮助!谢谢!
选项 1
<div>
@using (Ajax.BeginForm("GetCode", "PublicOffers", null, new AjaxOptions()
{
UpdateTargetId = "detailsDiv",
InsertionMode = InsertionMode.Replace,
HttpMethod = "GET",
OnBegin = "onStart",
OnComplete = "onComplete",
OnSuccess = "myCallback"
}))
{
//bool checkedOption = false;
//@Html.CheckBoxFor(x => checkedOption, new { Name = "OptIn" })
@Html.CheckBoxFor(model => model.OptIn);
@Html.HiddenFor(model => model.Id);
<input type="submit" value="Get Code" class="button btn-primary" />
}
</div>
选项 2
<div>
@using (Ajax.BeginForm(new AjaxOptions()
{ HttpMethod = "GET",
Url = "PublicOffers/GetCode",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "detailsDiv",
OnBegin = "onStart",
OnComplete = "onComplete",
OnSuccess = "myCallback"
}))
{
//bool checkedOption = false;
//@Html.CheckBoxFor(x => checkedOption, new { Name = "OptIn" })
@Html.CheckBoxFor(model => model.OptIn)
//@Html.HiddenFor(model => model.Id, new { Name = "OfferId" })
@Html.HiddenFor(model => model.Id);
@Html.AntiForgeryToken()
<input type="submit" value="Submit" />
}
</div>
【问题讨论】:
-
能否提供选项1的控制器代码?
-
我将它添加到我的答案中,这样人们就可以看到如何将复选框值传递给控制器。
标签: asp.net-mvc-5 ajax.beginform