あなたはあなたのデータを提出するために、AJAXを使用する必要がありますし、あなたのアクションメソッドは、JSONのresposeを返し、UDPATE DOM必要に応じて。フォーム内のファイルおよびその他の入力フィールドを送信するには、FormData
を使用する必要があります。
あなたの部分図は、あなたのアクションメソッドは、StatusプロパティとJSON応答を返すと仮定
$("#replaceYourFormIdHere").submit(function(e) {
e.preventDefault();
var formAction = $(this).attr("action");
var fdata = new FormData();
var fileInput = $('#Img')[0];
var file = fileInput.files[0];
fdata.append("Img", file);
// You can update the jquery selector to use a css class if you want
$("input[type='text'").each(function (x, y) {
fdata.append($(y).attr("name"), $(y).val());
});
$.ajax({
url: formAction,
type: "POST",
data: fdata,
processData: false,
contentType: false,
success: function (data) {
var msg = "<ul>";
if (data.status === "success") {
msg += '<li>' + data.message + '</li>';;
} else {
$.each(data.errorList,
function(a, b) {
msg+= '<li>' + b + '</li>';
});
}
msg += "</ul>";
$("#ResponsePost").html(msg);
},
error: function(x, y, z) {
alert('error al postear');
return false;
}
});
});
イドImg
と入力ファイル要素を持つID
replaceYourFormIdHere
でフォームをレンダリング仮定します。あなたの
UploadFileViewModel
はタイプ
HttpPostedFileBase
public HttpPostedFileBase Img { set; get; }
のImg
性質を持っていると仮定すると、
public ActionResult UploadFile(UploadFileViewModel model)
{
if (ModelState.IsValid)
{
//to do : Save model.Img
return Json(new {status = "success", message = "Success!"});
}
else
{
var errorList = (from modelStateVal in ViewData.ModelState.Values from error
in modelStateVal.Errors select error.ErrorMessage).ToList();
return Json(new { status = "error", errorList = errorList });
}
}
は、あなたが部分図でスクリプトを入れていないことを確認してください。メインビューにスクリプトを含めることをお勧めします。
:
次に、あなたのような何かを書くことができます!私はまだあなたの質問が何であるか理解していません。 – Shyju
こんにちは、お返事いただきありがとうございます。要するに、jsonresult –
から部分ビューを更新するには、フォームを送信するためにajaxを使用し、必要に応じてDOMを更新してください。 – Shyju