我需要帮助使用 jQuery 从 ASP.NET Core razor 视图页面传递隐藏控件值。
jQuery 用于获取动态控件选定的值:
@section scripts{
<script>
$(function () {
$("button[type='submit']").click(function () {
event.preventDefault();
var properties = [];
$("#tb_properties tr").each(function (index, item) {
var $row = $(item), $td = $row.find('td');
$td.each(function (i, td) {
var propertyname = $td.find("input[type='text']").val();
var selctedvalue = $td.find("select").val();
properties.push('"' + propertyname + '":"' + selctedvalue + '"');
})
});
var jsonstr = '{' + properties.join(",") + '}';
var jsobject = JSON.parse(jsonstr);
console.log(JSON.stringify(jsonstr));
console.log(jsonstr);
$.ajax({
type: "Post",
url: "/Home/Insert",
//data: jsobject,
data: jsonstr,
contentType: "application/json",
success: function (response) {
toastr.info(response.status + "<br>" + "<br>" + response.message);
$("#tb_properties select").val("");
$("#partial_div").load(window.location.href + " #partial_div");
},
error: function (xhr, textStatus, errorThrown) {
console.log('in error');
}
});
});
});
</script>
}
这个 jQuery 工作正常。需要通过 jQuery 将另一个隐藏控件值传递给下面的控制器 HTTP post 插入方法。有人可以帮我吗?
[HttpPost]
public IActionResult Insert([FromBody] JObject jsonModel)
{
if (jsonModel != null)
{
List<K360mapMaster> K360mapListObj = new List<K360mapMaster>();
foreach (JProperty prop in jsonModel.Children())
{
string key = prop.Name.ToString();
string value = prop.Value.ToString();
//!string.IsNullOrWhiteSpace(text)
if (!string.IsNullOrEmpty(value))
{
K360mapListObj.Add(new K360mapMaster() { ClientCatalog = key, K360catalog = value });
}
}
if (K360mapListObj.Count > 0)
{
try
{
_context.K360mapMasters.AddRange(K360mapListObj);
_context.SaveChanges();
return Json(new { Status = "Success", Message = "No conflicts. Catalogs mapped." });
}
catch (Exception ex)
{
TempData["ExceptionmsgM"] = ex;
throw;
}
}
else
{
return Json(new { Status = "Error", Message = "Catalogs not selected." });
}
}
return RedirectToAction("Index");
}