【发布时间】:2017-11-27 01:51:45
【问题描述】:
我有一个类似的端点
public ActionResult Create(int? projectId = null)
{
if (!projectId.HasValue)
{
throw new ArgumentException(nameof(projectId));
}
// ...
return this.View(model);
}
它将model 传递到一个名为Create.cshtml 的视图中,并在从另一个视图中单击该页面时呈现该页面
<a href="@Url.Action("Create", new { projectId = ViewBag.ProjectId })" class="btn btn-link">
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Project </a>
问题是我想要另一个可以点击同一端点并上传文件的按钮。我有
<form id="branch-config">
<input type="file" name="json" />
<button type="submit" class="btn btn-link">
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Project Using Config
</button>
</form>
<script>
$(document).ready(function () {
//form Submit action
$("#branch-config").submit(function (evt) {
evt.preventDefault();
var formData = new FormData($(this)[0]);
$.ajax({
url: "@Url.Action("Import", new { projectId = ViewBag.ProjectId })",
type: 'GET',
data: formData,
async: true,
cache: false,
contentType: false,
enctype: 'multipart/form-data',
processData: false
});
return false;
});
});
</script>
它成功上传了文件,但是return this.View(model) 只是在响应中返回视图但不导航到页面,可以这么说。我尝试创建一个不同的端点并执行this.RedirectToAction("Create", new { projectId = projectId }),但发生了同样的问题。知道如何在使用 AJAX/jQuery 和上传文件时实际导航到我的 /Create 页面,还是有其他方法?
【问题讨论】:
-
Ajax 调用从不重定向(它们的全部意义在于保持在同一页面中)。只需对单独的控制器方法进行正常提交,然后使用
return RedirectToAction()在该 POST 方法中重定向 -
但是如果您已经在
Create.cshtml视图中,那么重定向相同视图的意义何在? -
做一个普通的表单提交并从你的 http post action 做一个重定向
标签: javascript c# asp.net ajax asp.net-mvc