【问题标题】:create a folder once a button click in asp.net mvc在 asp.net mvc 中单击按钮后创建一个文件夹
【发布时间】:2016-02-25 03:45:20
【问题描述】:

我正在创建 asp.net mvc 5 应用程序。在该应用程序中,我想在单击前端视图页面上的按钮后生成一个文件夹。

我想在以下位置生成该文件夹~/Essential_Folder/

<input type = "button" value="Create_Folder" class="btn btn-default" id="create_folder"/>

我该怎么做呢,

  1. 我可以使用服务器端语言(在我的例子中是 C#)来做到这一点吗?

  2. 这可以使用客户端语言(如 JavaScript)吗?

脚本

<script type="text/javascript">

     $('btn-default').click(function () {


     });

  </script>

【问题讨论】:

  • 您需要处理按钮.click()事件并使用ajax调用创建文件夹的控制器方法。
  • @StephenMuecke 这实际上是服务器端。因为由于安全原因,javascript 或 jquery 无法实际上在 Windows 中创建文件/文件夹。那么为什么不直接让按钮点击控制器动作来创建目录呢!
  • @dotnetkid,这正是我的评论所说的
  • @StephenMuecke 所以我应该看看“在 asp.net mvc 中使用 ajax 创建一个文件夹”是吗?
  • 控制器代码只需要使用System.IO.Directory.CreateDirectory() 方法(并返回JsonResult 表示成功,否则您可以在ajax 成功回调中测试)

标签: javascript c# asp.net-mvc directory create-directory


【解决方案1】:

正如@Stephen 所说,您需要使用 ajax 来创建文件夹。所以你可以有一个像这样的动作方法:

    [HttpPost]
    public JsonResult CreateDirectory()
    {
        //if location has folder called "Essential_Folder" it should allow to goto inside of this if condition
        if (Directory.Exists(Server.MapPath("~/Content/Essential_Folder/")))
        {
            Directory.CreateDirectory(Server.MapPath(string.Format("~/Content/Essential_Folder/NewDir_{0}",
            DateTime.Now.Millisecond)));
            return Json("OK");
        }
        return Json("NO");
    }

你的 ajax 调用应该是这样的:

<script type="text/javascript">

    $('.btn').click(function() {
        $.ajax({
            url: "@Url.Action("CreateDirectory")",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            error: function (response) {
                alert(response.responseText);
            },
            success: function (response) {
                if (response === 'OK')
                    alert("Directory has been created");
                else
                    alert("errro");
            }
        });
    });

</script>

【讨论】:

  • 由于调用进行了修改,它可能应该是 POST 而不是 GET(不希望用户能够导航到它)
  • 不要在同一个位置使用两次Server.MapPath
  • @SirwanAfifi 谢谢我正在尝试集成这个解决方案,在这里我还有一个问题,如果我们想创建新文件夹,我们应该在~/Content 位置创建吗?
  • 将文件和文件夹存储在~/Content 中很常见,但您也可以使用~/Essential_Folder/
  • @SirwanAfifi 但很久以前,在 mvc 4 应用程序中,我在 Root 位置手动创建了文件夹,然后我使用 IIS 管理器部署了该项目,但随后该文件夹消失了,我想这就是为什么你提到那个位置
猜你喜欢
  • 1970-01-01
  • 2023-02-17
  • 1970-01-01
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-16
  • 1970-01-01
相关资源
最近更新 更多