嗨,我有一个这样的控制器:
public class MyController : Controller
{
public MyController(Uow uow)
{
;
}
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
var validationResults = _uow.GetResults(file.FileName, file.InputStream);
return View(new MyViewModel { Errors = validationResults.Errors, Data = validationResults.Data });
}
[HttpPost]
public void Save(MyViewModel viewModel)
{
//Save the data
}
}
这有一个像这样的视图:
@model MyViewModel
<form action="" method="post" enctype="multipart/form-data">
<label for="file" id="filelabel">Filename:</label>
<input type="file" name="file" id="file" />
<input type="submit" id="submitbtn" disabled="disabled" />
<img class="loader" id="loader" style="display: none;" alt="Loading..." src="@Url.Content("~/Content/Images/ajax-loader.gif")" />
@if (Model != null && Model.Errors.Any())
{
foreach (var error in Model.Errors)
{
<span class="error">@error</span>
}
}
<button id="savebtn" >Save</button>
</form>
<script type="text/javascript">
$(document).ready(function () {
$('#file').change(function () {
alert("in here");
$('#submitbtn').prop('disabled', false);
});
$('#submitbtn').click(function () {
$('#loader').show();
});
});
</script>
所以我在这里想要的是一种将文件上传到控制器的方法。我已经实现了这一点,并在 Index Post 中收到了它。然后我处理这个工作正常。然后我将相关数据放入 viewModel 并重新显示表单。
我想要的是,当按下 Save 按钮时,会使用填充的 viewModel 调用 Save Post 方法。但是,每当我按下按钮时,它都会发布到 Index Post,这是有道理的。
有人可以告诉我如何保留我的文件上传和处理代码,但是当我稍后按下 Save 按钮时,viewModel 会发送到 Save Post 方法?