繁体   English   中英

上载文件ASP.NET时生成错误消息

[英]generate error message when uploading a file ASP.NET

目前,我正在上传任何文件并保存。 我想要的是如果用户没有选择任何文件并按上载按钮,则会生成一条错误消息,但是此时,它唯一要做的就是重定向到另一个视图,无论它是否已选择文件。 我想知道是否还有另一种更好的方式来生成这些文件的上载

这是我的控制器

public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public void Upload(HttpPostedFileBase file)
        {
            string file = (file.FileName).ToLower();

            try
            {
                file.SaveAs(Server.MapPath("~/Uploads/" + file));
            }
            catch (Exception e)
            {
                ViewBag.UploadError = "Upload file error";
            }           
        }
    }

这是视图:

@{
    ViewBag.Title = "Home";
}

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

    <div class="col-md-12 offset-md-5">
        <div class="custom-file col col-lg-2">
            <input type="file" name="file" class="custom-file-input" id="inputGroupFile01" aria-describedby="inputGroupFileAddon01">
            <label class="custom-file-label" for="inputGroupFile01">Choose file</label>
        </div>
        <div class="col-5">
            <button class="btn btn-success col-md-4 mt-2" type="submit">Upload file</button>
        </div>
    </div>

    //Message Error
    <div class="alert alert-danger" role="alert">
        <p class="text-danger">
            @ViewBag.UploadError
        </p>
    </div>
}

正确编写动作和控制器

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

并检查运行中的文件

[HttpPost]
        public ActionResult Upload(HttpPostedFileBase file)
        {
            if( file != null && file.Length > 0)
            {
                string file = (file.FileName).ToLower();
                try
                {
                    file.SaveAs(Server.MapPath("~/Uploads/" + file));
                }
                catch (Exception e)
                {
                    ViewBag.UploadError = "Upload file error";
                } 
               return View("Index");
            }
            else
            {
             //do something
                 return View("Index");
            }        
        }

@Thomas Caycedo Martinez,我相信您可以像下面那样简单地修改控制器方法。 如果出错,则返回同一条错误消息。 您的观点保持不变。

    [HttpPost]
    public ActionResult Upload(HttpPostedFileBase file)
    {
        if (file != null)
        {
            string fileName = (file.FileName).ToLower();
            try
            {
                file.SaveAs(Server.MapPath("~/Uploads/" + fileName));
            }
            catch (Exception e)
            {
                ViewBag.UploadError = "Upload file error";
                return View("Index");
            }
        }
        else {
            ViewBag.UploadError = "Upload file error";
            return View("Index");
        }

        return View();
    }

您可以使用JavaScript / JQuery进行检查。

$(function(){

  $("#btnSubmit").on("click",function(){
    if($("#inputGroupFile01").val()==""){
        alert("Please select a file")
        return false;
    }
 })
})

其中btnSubmit是提交按钮的id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM