gpt4 book ai didi

Javascript 执行 Action 以在 MVC4 中移动文件

转载 作者:行者123 更新时间:2023-11-28 02:17:31 25 4
gpt4 key购买 nike

单击 MVC View 中的按钮后,将执行以下 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 函数是一个 JavaScript 函数,在我的 Android 设备上运行,并将图像上传到我的 ~/App_Data/ 文件夹中,我希望将此图像移动到我的 ~/Content/中images/ 文件夹。我的 Controller 中的操作如下:

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 调用它的正确方法吗?

我知道我的文件名等是正确的,所以我不确定问题出在哪里。

最佳答案

编辑:我之前的答案虽然技术上正确,但并不是最好的。感谢 BASmith 为我指明了正确的方向。

编辑2:添加了来自ajax调用的重定向逻辑。

您的操作未被调用,因为 TestMove 方法不是此类的成员:

public class FunctionsController : Controller
{
}

因此可以通过以下两种方式之一修复此问题:

  1. 创建一个 FunctionsController : Controller 类并向其中添加 TestMove 方法。
  2. 将 URL 字符串中的 "Functions" 参数更改为 TestMove 方法当前所在的 Controller 的名称。

由于您是通过 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>

Controller :

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 });
}

关于Javascript 执行 Action 以在 MVC4 中移动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16182988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com