这是控制器:
[HttpPost]
public async Task<ActionResult> Run(Job job, HttpPostedFileBase productRequestFile, HttpPostedFileBase masterFile, string SignalRConnectionId)
{
return View(job);
}
这就是观点:
@using (Ajax.BeginForm("Run", "Job", null, new AjaxOptions(){ HttpMethod = "POST", UpdateTargetId = "container" }, new {enctype="multipart/form-data"} ))
{
<input type="file" name="masterFile" id="masterFile" class="btn btn-default" required />
<input type="file" name="productRequestFile" id="productRequestFile" class="btn btn-default" required />
@Html.TextAreaFor(m => m.Parameters, new { @class = "control form-control" })
@Html.ValidationMessageFor(m => m.Parameters)
<input type="hidden" id="SignalRConnectionId" name="SignalRConnectionId" />
@Html.HiddenFor(m => m.Name)
<table><tr><td></td></tr></table>
<div id="container"></div>
<button id="StartButton" type="submit" class="btn btn-lg btn-primary center-block">Start job</button>
}
现在我正在返回View(job)
,但这会导致页面刷新。如果我返回null,则页面变为空白。我可以返回什么,以便页面没有任何反应?
答案 0 :(得分:0)
您需要在ajax选项中提供更新目标ID。此外,Ajax表单的作用是,它将表单发布到指定的URL,然后替换(默认情况下)UpdateTargetId div的所有内容,并将内容作为响应接收,因此在您的情况下,必须返回视图,否则,它将是空白的。
答案 1 :(得分:0)
我的问题是我错过了对jquery.unobtrusive-ajax的引用