こんにちは、次のようなコントローラーがあります。
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 Post メソッドが呼び出されることです。ただし、ボタンを押すたびに、意味のある Index Post に投稿されます。
ファイルのアップロードと処理コードを保持し、後で [保存] ボタンを押すと、viewModel が [Post の保存] メソッドに送信されるようにする方法を教えてください。