【发布时间】:2021-12-15 00:29:24
【问题描述】:
我需要使用代码myform.submit(); 提交普通表单,但同时我不希望它重新加载页面。
为此,我在表单本身中使用了onsubmit="return false;",此外,我还为表单EventListener 使用了这段代码e.preventDefault();。我在 asp.net 核心服务器端使用了返回类型 return Json(rslt); ,尽管我总是丢失我的页面并得到一个值为 Json(rslt) = 1 的空页面
我错过了什么吗?
HTML
<form id="cloneFile" onsubmit="return false;" asp-action="postFile" asp-controller="Rooms" method="post" enctype="multipart/form-data">
some html
</form>
JAVASCRIPT
var myform = document.getElementById('cloneFile');
function somefun (){
.... bla bla bla
myform.submit();
}
myform.addEventListener("submit",
function (e) {
e.preventDefault();
var frm = e.target;
var ClonedFrm = frm.cloneNode(true);
ClonedFrm.removeAttribute("id");
var frmData = new FormData(ClonedFrm);
var Url = e.target.action;
fetch (Url, {method: "POST", body: frmData})
{
... bla bla bla
})
return false;
});
Asp.Net Core
[HttpPost]
public IActionResult postFile([FromForm] SubjectFile fileData)
{
int rslt = 0;
if (ModelState.IsValid)
{
fileData.Id = Guid.NewGuid();
_context.Add(fileData);
rslt = _context.SaveChanges();
}
return Json(rslt);
}
【问题讨论】:
标签: javascript html asp.net-core