我是使用剃刀应用程序的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;
}
答案 0 :(得分:2)
你使用了错误的辅助方法:
变化:
@Url.Content("~/Documents/OverWrite")
为:
@Url.Action("OverWrite","Documents")
// first parmeter action name, second parameter controller name