文章内容

2017/4/24 16:16:19,作 者: 黄兵

ActionResult 如何向前台返回信息

一直困扰我很久的问题,今天终于解决了。

在写代码的时候,如果是ActionResult如何将后台成功或是失败的信息返回到前台,这个问题一直困扰了我很久,前台使用@html.beginform(),没有采用ajax的提交方式,所以返回信息比较困难。

后来看了一个国外的一个程序代码问题终于解决了。

看一下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "ID,Title,AlbumId")] Photo photo, HttpPostedFileBase file)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    TempData["Message"] = "";
                    var filename = "";
                    if (file != null && file.ContentLength > 0)
                    {
                        Guid gid;
                        gid = Guid.NewGuid();
                        var extension = Path.GetExtension(file.FileName);
                        filename = gid + extension;
 
                        var path = Path.Combine(Server.MapPath("~/Content/PhotoGallery/" + setAlbumName(photo.AlbumId)), filename);
 
                        var data = new byte[file.ContentLength];
                        file.InputStream.Read(data, 0, file.ContentLength);
 
                        using (var sw = new FileStream(path, FileMode.Create))
                        {
                            sw.Write(data, 0, data.Length);
                        }
                    }
                    photo.ImageName = filename;
                    photo.InsertedDateTime = DateTime.Now;
                    photo.InsertedBy = User.Identity.Name;
                    db.Photos.Add(photo);
                    db.SaveChanges();
                    TempData["Message"] = "<div class='alert alert-success'><a href='#' class='close' data-dismiss='alert'>&times;</a><strong>Success!</strong> Successfully Save.</div> ";
                }
                catch (Exception ex)
                {
 
                    TempData["Message"] = "<div class='alert alert-danger'><a href='#' class='close' data-dismiss='alert'>&times; Directory</a><strong> " + ex.ToString() + "</strong> Not found.</div>";
                }
                return RedirectToAction("Index");
            }
    

可以看到他是通过TempData["Message"]返回信息的,那我们看一下跳转到Index页面的前台页面是如何显示TempData["Message"]的,代码如下:

@Html.Raw(TempData["Message"])

前台直接显示就可以了。

这个问题终于解决了。有什么问题在下面给我留言。

本文黄兵的个人博客原创,转载请注明出处。

有什么问题请在下面给我留言。

分享到:

发表评论

评论列表