首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未调用ActionResult

未调用ActionResult
EN

Stack Overflow用户
提问于 2015-09-28 21:09:13
回答 2查看 509关注 0票数 3

我有一个视图,在这个视图中我调用了一个ActionResult方法,但是在该方法中放置一个断点就会告诉我它没有被调用。

代码语言:javascript
复制
<div>
<ul class="list-group">
    @foreach (var item in Model)
    {
        <li class="list-group-item">
            <h4>Slide ID: @item.SlideId</h4>
            <p><i>Received: @item.TimeStamp</i></p>
            <div class="row">
                <div class="col-md-4">
                    <h4>@Html.ActionLink("View details", "Well", new {slideid = item.SlideId})</h4>
                    <img src="@Url.Action("Index", "Images", new {id = item.SlideId})"/> //This is where I want to call the method                       
                </div>
            </div>
        </li>
    }
</ul>

下面是方法:

代码语言:javascript
复制
public class ImagesController : Controller
{
    // GET: Images
    public ActionResult Index(string id)
    {
        byte[] imageData = new byte[0];
        string cs = "Data Source=" + "some path";

        using (SQLiteConnection con = new SQLiteConnection(cs))
        {
            string stm = "SELECT LastImage FROM Well WHERE SlideId = " + "'" + id + "'";
            con.Open();

            using (SQLiteCommand cmd = new SQLiteCommand(stm, con))
            {
                using (SQLiteDataReader rdr = cmd.ExecuteReader())
                {
                    while (rdr.Read())
                    {
                        imageData = Serialize(rdr["LastImage"]);
                    }

                    rdr.Close();

                }
            }

            con.Close();
        }
        return File(imageData, "image/png");
    }

    public static byte[] Serialize(object obj)
    {
        var binaryFormatter = new BinaryFormatter();
        var ms = new MemoryStream();
        binaryFormatter.Serialize(ms, obj);
        return ms.ToArray();
    }
}

我试图用这段代码实现的是将一个图像从数据库加载到视图中。有什么关于我哪里做错了的提示吗?

现在使用RouteConfig:

代码语言:javascript
复制
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}
EN

回答 2

Stack Overflow用户

发布于 2015-09-28 21:38:07

当您编写<img src="@Url.Action("Index", "Images", new {id = item.SlideId})"/>时,您不会调用操作,而是调用路由url。结果是一个字符串,例如localhost:8080/images/index/abcd123456,因此,如果您想调用操作,则需要使用@Html.Action("Index", "Images", new {id = item.SlideId})。注意,不是@Url.Action,而是@Html.Action

票数 0
EN

Stack Overflow用户

发布于 2015-09-28 22:12:10

我认为,与其为每个图像打开和关闭数据库连接,更好的方法是收集所有信息来呈现该页面,并将其发送到您发布的视图模型中。假设它被称为HomeController的索引操作。它看起来像这样:

代码语言:javascript
复制
public class HomeController : Controller
{
    public ActionResult Index(string id)
    {
        var listOfItems = new List<SomeClass>();

        string cs = "Data Source=" + "some path";
        using (SQLiteConnection con = new SQLiteConnection(cs))
        {
            string stm = "SELECT SlideId, TimeStamp, LastImage FROM Well"; 
            con.Open();

            using (SQLiteCommand cmd = new SQLiteCommand(stm, con))
            {
                using (SQLiteDataReader rdr = cmd.ExecuteReader())
                {
                    while (rdr.Read())
                    {
                        var someItem = new SomeClass()
                        {
                            SlideId = rdr["SlideId"],
                            ImageData = Serialize(rdr["LastImage"]),
                            TimeStamp = rdr["TimeStamp"]
                        };
                        listOfItems.Add(someItem);
                    }

                    rdr.Close();
                }
            }

            con.Close();
        }

        return View(listOfItems);
    }
}

当然,如果条目太多,您应该始终考虑分页,并限制列表中条目的数量,以缩短响应时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32823830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档