javascript - 如何将不同的数据类型模型值从 html 传输到控制器
问题描述
我正在尝试使用 java 脚本函数将值从 html 模型值带到控制器操作方法。我试图将值从 html 带到操作方法,但不起作用。空值被传递到参数模型
我的模型 Employee 模型中有以下对象
public List<string> Employee { get; set; }
public bool IsSick { get; set; }
public bool IsDeducted { get; set; }
public decimal DayOffHrs { get; set; } = 0.00M;
员工 html
var emp = $('#dropdownEmployee option:selected');
var model = {
employee: $('#dropdownEmployee option:selected') ,
issick: $('#isdayoff').val(),
isdeducted: $('#'isdeducted').val(),
dayoffhrs: $('#'dayoffhrs').val()
}
var url = "/Attendance/BulkUpdate"
console.log(Emp);
$.ajax({
type: "POST",
url: url,
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(model),
success: function (model) {
},
failure: function (response) {
console.log(response.responseText);
},
error: function (response) {
console.log(response.responseText);
}
});
<td><input type="checkbox" id="isdayoff" value="true" asp-for="IsDayOff" /> </td>
<div class="controls col-sm-8">
<select id="dropdownEmployee" multiple class="form-control" asp-for="Employee" asp-items="@ViewBag.Employees" data-role="select"></select>
</div>
<td>
<select id='isdeducted' name="IsDeducted" asp-for="IsDeducted" data-role="select">
<option value="false">No</option>
<option value="true">Yes</option>
</select>
</td>
<td><input type="text" id='dayoffhrs' asp-for="DayOffHrs" class="col-sm-5" maxlength="5" /></td>
控制器动作方法
[HttpPost]
public IActionResult BulkUpdate([FromBody] Employee model)
{
}
解决方案
我根据您的代码进行了测试,同时将值存储在 formdata
模型:
public class Employee
{
public List<string> employee { get; set; }
public bool IsSick { get; set; }
public bool IsDeducted { get; set; }
public decimal DayOffHrs { get; set; } = 0.00M;
}
看法:
@model Employee
<td>
<div>
<label asp-for="IsSick"></label>
<input type="checkbox" id="isdayoff" value="true" asp-for="IsSick" />
</div>
</td>
<td>
<div>
<label asp-for="employee"></label>
<div class="controls col-sm-8">
<select id="dropdownEmployee" multiple class="form-control" asp-for="employee" asp-items="@ViewBag.Employees" data-role="select"></select>
</div>
</div>
</td>
<td>
<div>
<label asp-for="IsDeducted"></label>
<select id='isdeducted' name="IsDeducted" asp-for="IsDeducted" data-role="select">
<option value="false">No</option>
<option value="true">Yes</option>
</select>
</div>
</td>
<td>
<div>
<label asp-for="DayOffHrs"></label>
<input type="text" id='dayoffhrs' asp-for="DayOffHrs" class="col-sm-5" maxlength="5" />
</div>
</td>
<input id="btn" type="button" class="btn btn-danger" value="submit" />
@section scripts{
<script>
$("#btn").on("click", function () {
var formdata = new FormData();
var values = $('#dropdownEmployee').val();
values.forEach(function (value,i) {
formdata.append("employee[" + i + "]", value)
})
formdata.append("IsSick", $('#isdayoff').is(':checked'));
formdata.append("IsDeducted", $('#isdeducted').val());
formdata.append("dayoffhrs", $('#dayoffhrs').val());
var url = "/Attendance/BulkUpdate"
$.ajax({
type: "POST",
url: url,
dataType: "json",
processData: false,
contentType: false,
data: formdata,
success: function (model) {
},
failure: function (response) {
console.log(response.responseText);
},
error: function (response) {
console.log(response.responseText);
}
});
})
</script>
}
控制器:
[HttpPost]
public IActionResult BulkUpdate(Employee model)
{
return View();
}
结果:
推荐阅读
- r - 如何通过 Windows 任务计划程序通过多个目录运行 R 脚本
- angular - 带插座的角度延迟加载子路由
- python - python在计算一般矩阵的特征值时引发语法错误
- firebase - Firebase 分析云触发限制
- c++ - 错误:无法在初始化中将 'const unsigned char (*)[7]' 转换为 'const unsigned char (*)[]'
- javascript - 在 Node 中返回 Postgres 查询,服务器不会运行
- amazon-web-services - 使用 SAML 从 aws cli 担任角色
- angularjs - 这个改变上下文,它是未定义的 angularjs
- android - Python 使用 ApkTool 和 Subprocess 反编译 APK
- database - 以普通用户身份连接而不授予权限时在 Oracle 数据库中收集 dba_users 信息