Ajax URL调用使用javascript在MVC 4中无效

时间:2014-07-17 15:55:15

标签: jquery asp.net-mvc asp.net-mvc-4

我是使用剃刀应用程序的MVC 4新手。

我有一个文件上传控件和提交按钮,用于上传文件并将文件提交到本地计算机中的特定目录(在下面的代码中指定)。

我的要求:

如果文件已存在于指定的文件路径目录中,我必须询问是否过度写入或创建备份文件。

我显示的确认消息为“文件已存在,您要覆盖吗?”

如果用户点击

确定/是 ----我必须创建文件覆盖

取消/否 ----我必须创建文件备份

我能够正确显示确认消息并能够选择OK / YES或

取消/否。

注意: 1)我不应该在我的应用程序中使用模型

2)我在同一个控制器中使用动作方法。

3)我在E:\ drive

中创建了“UploadeFiles”文件夹

问题:

单击OK / YES或CANCEL / NO后,ajax url都没有达到控制器方法,也没有任何工作。我被困在这里。

注意:但如果单击“确定/是”或“取消/否”,则与“覆盖”或“备份”对应的警报消息正在工作

我的观点:

@if (TempData["FileExists"] != null)

    {

    <script type="text/javascript">
           if (confirm("File Already Existed, Do you want to over write?"))
            {
                alert("Proceed for over writing file");
                var Url = "@Url.Content("~/Documents/OverWrite")";
                $.ajax({
                    url: Url,
                     type: 'POST',
                    dataType: 'json',
                    data: { docfileName: "FileData" },
                    success: function (data)
                    {
                        alert("overwrite success")
                    }
                });
             }                  
             else 
             {
                alert("Create Backup");
                var Url = "@Url.Content("~/Documents/CreateBackup")";
                  $.ajax({
                   type: 'POST',
                   url: Url,
                   dataType: 'json',
                   data: { docfileName: "FileData"},
                   success: function (data) { alert("Backup success") }
                });
            }
        }
</script>
    }


@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))

{

@Html.ValidationSummary(true)


    <label style="width: 300%;"for="fileToUpload">Upload File</label>
    <input type="file" name="fileToUpload" id="fileToUpload"/>
    <input type="submit" value="Create" id="btnCreate"/>


}

我的控制器

MVC控制器名称: DocumentsController

public ActionResult CreateDocuments(HttpPostedBaseFile fileToUpload)

{

    string fileName = Path.GetFileName(fileToUpload.FileName);

    string fileToUploadPath= @"E:\UploadFiles\";

    string fileTotalPath = Path.Combine(fileToUploadPath, fileName);

   if (System.IO.File.Exists(fileToUploadPath)

     {

     TempData["FileExists"] = "Yes";

      return PartialView("CreateDocument");

     }

}


[HttpPost]


public ActionResult OverWrite(string docfileName)

        {

             JsonResult resultOverWrite= new JsonResult();

            string ajaxdata=docfileName;

            // Here i am writing code for Overwriting a document file

            return resultOverWrite;
        }




public ActionResult CreateBackup(string docfileName)

        {

            JsonResult resultbackup= new JsonResult();

            string ajaxdata=docfileName;

           // I am writing here for back up coding


            return resultbackup;
        }

1 个答案:

答案 0 :(得分:2)

你使用了错误的辅助方法:

变化:

@Url.Content("~/Documents/OverWrite")

为:

@Url.Action("OverWrite","Documents") 
// first parmeter action name, second parameter controller name