很有可能,但是需要走一段漫长的路。
步骤1:编写你的表格。
例如:
步骤1:编写您的表单。
@using (Ajax.BeginForm(YourMethod, YourController, new { id= Model.Id }, new AjaxOptions {
{
<input type="file" id="image" name="image" />
<input type="submit" value="Modify" />
}
步骤2:拦截请求并将其发送到服务器
<script type="text/javascript">
$(function() {
$("#form0").submit(function(event) {
var dataString;
event.preventDefault();
var action = $("#form0").attr("action");
if ($("#form0").attr("enctype") == "multipart/form-data") {
dataString = new FormData($("#form0").get(0));
contentType = false;
processData = false;
} else {
}
$.ajax({
type: "POST",
url: action,
data: dataString,
dataType: "json",
contentType: contentType,
processData: processData,
success: function(data) {
},
error: function(jqXHR, textStatus, errorThrown) {
alert("fail");
}
});
});
});
</script>
步骤3:因为您进行了ajax调用,所以您可能想要替换一些multipart/form-data
的图像或其他内容。
例如:
handleSuccessFunctionHERE(data)
{
$.ajax({
type: "GET",
url: "/Profile/GetImageModified",
data: {},
dataType: "text",
success: function (MSG) {
$("#imageUploaded").attr("src", "data:image/gif;base64,"+msg);
},
error: function (msg) {
alert(msg);
}
});
}
MSG变量是一个base64加密的字符串。在我的情况下,它是图像的源。
通过这种方式,我成功地更改了个人资料图片,之后图片立即更新。
同时,请确保在Application_Start(global.asax)中添加以下代码:
ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());
非常好用吧?
P.S.: 这个解决方案可行,所以不要犹豫,可以询问更多细节。
return RedirectToAction(YourAction); }
- Demian Flavius