MVC Javascript和AJAX,checbox onchange()
我正在构建一个简单的MVC项目,我需要在更改时使用checkbox方法,并获取bool值,以便在我的控制器的方法中使用 控制器中的方法:MVC Javascript和AJAX,checbox onchange(),javascript,ajax,asp.net-mvc,visual-studio,Javascript,Ajax,Asp.net Mvc,Visual Studio,我正在构建一个简单的MVC项目,我需要在更改时使用checkbox方法,并获取bool值,以便在我的控制器的方法中使用 控制器中的方法: [HttpGet] public ActionResult GetValidUser(bool Checkbox) { List<Users> userData = new List<Users>(); connection(); con.Open();
[HttpGet]
public ActionResult GetValidUser(bool Checkbox)
{
List<Users> userData = new List<Users>();
connection();
con.Open();
var d = new DataTable();
//bool valid = bool.Parse(Request.Form.GetValues("Category").ToString());
try
{
if (ModelState.IsValid)
{
if (Checkbox)
is_active = true;
else if (!Checkbox)
is_active = false;
userData = Getdatatabletolist("GetActiveUsers");
return View(userData);
}
ViewBag.Message = "Users are here";
return View(userData);
}
catch (Exception ex)
{
ViewBag.Message = "Can't get users";
return View(userData);
}
}
[HttpGet]
公共行动结果GetValidUser(布尔复选框)
{
List userData=new List();
连接();
con.Open();
var d=新数据表();
//bool valid=bool.Parse(Request.Form.GetValues(“Category”).ToString());
尝试
{
if(ModelState.IsValid)
{
如果(复选框)
is_active=true;
else如果(!复选框)
is_active=false;
userData=Getdatatabletolist(“GetActiveUsers”);
返回视图(userData);
}
ViewBag.Message=“用户在这里”;
返回视图(userData);
}
捕获(例外情况除外)
{
ViewBag.Message=“无法获取用户”;
返回视图(userData);
}
}
及其观点
@model IEnumerable<WebApplicationIntro.Models.Users>
@{
ViewBag.Title = "GetValidUser";
}
<h2>GetValidUser</h2>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.Username)
</th>
<th>
@Html.DisplayNameFor(model => model.Password)
</th>
<th>
@Html.DisplayNameFor(model => model.is_active)
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Username)
</td>
<td>
@Html.DisplayFor(modelItem => item.Password)
</td>
<td>
@Html.DisplayFor(modelItem => item.is_active)
</td>
</tr>
}
</table>
@model IEnumerable
@{
ViewBag.Title=“GetValidUser”;
}
格瓦利杜瑟
@DisplayNameFor(model=>model.Name)
@DisplayNameFor(model=>model.Username)
@DisplayNameFor(model=>model.Password)
@DisplayNameFor(model=>model.is\u处于活动状态)
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.Name)
@DisplayFor(modelItem=>item.Username)
@DisplayFor(modelItem=>item.Password)
@DisplayFor(modelItem=>item.is\u处于活动状态)
}
主视图称为测试视图
@using WebApplicationIntro.Models
@{
ViewBag.Title = "Test";
AjaxOptions ajaxOpts = new AjaxOptions
{
UpdateTargetId = "tableBody"
};
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script src="~/Scripts/jquery-3.3.1.min.js"></script>
</head>
<body>
<table>
<tbody id="tableBody">
@Html.Action("GetValidUser", new { Checkbox = false })
</tbody>
</table>
<script>
$(document).ready(alert("jquery is working"));
</script>
@using (Ajax.BeginForm("GetValidUser", ajaxOpts))
{
<div class="col-md-10">
@Html.CheckBox("AutoCalculateMandate", false, new { onchange = "javascript:$(this.form).submit();" })
</div>
}
</body>
</html>
@使用WebApplicationIntro.Models
@{
ViewBag.Title=“测试”;
AjaxOptions ajaxOpts=新的AjaxOptions
{
UpdateTargetId=“tableBody”
};
}
指数
@Action(“GetValidUser”,new{Checkbox=false})
$(文档).ready(警报(“jquery正在工作”);
@使用(Ajax.BeginForm(“GetValidUser”,ajaxOpts))
{
@CheckBox(“AutoCalculateMandate”,false,new{onchange=“javascript:$(this.form).submit();”})
}
如何获取复选框的bool值并将其传递给方法?
提前感谢您您正在提交表单,变量“Checkbox”将不包含复选框是否选中的值。只有AutoCalculateMandate将保存检查操作的值。 将您的方法更改为
[HttpPost]
公共行动结果GetValidUser(布尔自动计算标准)
{
List userData=new List();
连接();
con.Open();
var d=新数据表();
//bool valid=bool.Parse(Request.Form.GetValues(“Category”).ToString());
尝试
{
if(ModelState.IsValid)
{
如果(复选框)
is_active=true;
else如果(!复选框)
is_active=false;
userData=Getdatatabletolist(“GetActiveUsers”);
返回视图(userData);
}
ViewBag.Message=“用户在这里”;
返回视图(userData);
}
捕获(例外情况除外)
{
ViewBag.Message=“无法获取用户”;
返回视图(userData);
}
}
将方法签名更改为public ActionResult GetValidUser(bool AutoCalculateMandate)。我使用的这个方法是从数据库获取列表,用post替换get将导致httpException!您是否有与GetValidUser关联的视图?您能提供该httpexception的详细信息吗?在这一行:@Html.Action(“GetValidUser”,new{AutoCalculateMandate=false})内部异常1:httpexception:执行子请求失败。有关详细信息,请检查InnerException。内部异常2:HttpException:在控制器“WebApplicationIntro.Controllers.DBController”上找不到公共操作方法“GetValidUser”。你可以在我的问题中找到GetValidUser的视图,我不知道在这里使用相同方法名的Html.Action的逻辑是什么。最好将@Html.Action(“GetValidUser”,new{AutoCalculateMandate=false})与其他名称分开,并将submit和Html.Action的通用功能分别放在另一个要访问的方法中。我对MVC有点陌生,Html.Action是获取方法GetValidUser的视图并将其放在测试视图的表中,你能在问题中编辑我的代码,告诉我你把它们分开是什么意思吗