单击MVC视图中的按钮后,将执行以下javascript函数
<script type="text/javascript">
function showAndroidUpload(string) {
Android.AndroidUpload(string);
var url = '@Url.Action("TestMove","Functions")';
$.ajax({ url: url, success: DataRetrieved, type: 'POST', dataType: 'json' });
}
</script>
AndroidUpload函数是一个在我的Android设备上运行的javascript函数,并将图像上传到我的~/App_Data/
文件夹中,我希望将此图像移动到我的~/Content/images/
文件夹中。我的控制器中的操作如下:
public ActionResult TestMove()//UploadModel model)//, IEnumerable<HttpPostedFileBase> picture)
{
string UploadedPath = "~/App_Data/image.jpg";
string SavePath = "~/Content/images/movedimage.jpg";
System.IO.File.Move(UploadedPath, SavePath);
return RedirectToAction("Index");
}
图片上传有效,但操作永远不会执行。这是使用ajax调用它的正确方法吗?
我知道我的文件名等是正确的,所以我不确定问题出在哪里。
答案 0 :(得分:1)
编辑:我之前的回答,虽然技术上正确并不是最好的。感谢BASmith指出我正确的方向。
EDIT2:从ajax调用中添加了重定向逻辑。
您的操作未被调用,因为TestMove方法不是此类的成员:
public class FunctionsController : Controller
{
}
所以这可以通过以下两种方式之一解决:
FunctionsController : Controller
类并向其添加TestMove
方法。"Functions"
参数更改为TestMove
方法当前所在的控制器名称。由于你是通过ajax调用你的方法,你需要自己处理重定向,如下所示: MVC RedirectToAction through ajax jQuery call in knockoutjs is not working
JavaScript的:
<script type="text/javascript">
function showAndroidUpload(string) {
Android.AndroidUpload(string);
var url = '@Url.Action("TestMove","Functions")';
$.ajax({ url: url, success: function(response){ window.location.href = response.Url; }, type: 'POST', dataType: 'json' });
}
</script>
控制器:
public ActionResult TestMove()//UploadModel model)//, IEnumerable<HttpPostedFileBase> picture)
{
string UploadedPath = "~/App_Data/image.jpg";
string SavePath = "~/Content/images/movedimage.jpg";
System.IO.File.Move(UploadedPath, SavePath);
var redirectUrl = new UrlHelper(Request.RequestContext).Action("Index", "Home");
return Json(new { Url = redirectUrl });
}