2017-06-01 66 views
1

我想基於TextBox輸入在我的視圖中顯示大量圖像。基於文本框輸入顯示圖像

我有這個Controller

public ActionResult GetProducts(long id, Search obj) 
{ 
    GetSearchByDropdowns(); 
    using (ThBEntities1 db = new ThBEntities1()) 
    { 
     if (id == null) { 
      return View("Index"); 
     } 

     byte[] image = db.Searches.Where(x => x.SearchTextBox == x.Product).SingleOrDefault().producturl; 
     var stream = new MemoryStream(image.ToArray()); 
     return new FileStreamResult(stream, "image/jpeg"); 
    } 
    return View("~/Views/Search/Index.cshtml", obj); 
} 

在我看來

if (Model.producturl != null) 
{ 
    for (int i = 0; i < 6; i++)--I only have 6 records 
    { 
     <img src='@Url.Action("GetProducts", "Search", new{ id = i })' /> 
    } 
} 

而且我的模型

public partial class Search 
{ 
    public long ID { get; set; } 
    public string Product { get; set; } 
    public byte[] producturl { get; set; } 
} 

我收到此錯誤:

The parameters dictionary contains a null entry for parameter 'id' of 
non-nullable type 'System.Int64' for method 
'System.Web.Mvc.ActionResult GetProducts(Int64, ThunderBird.Search)' 
in 'ThunderBird.Controllers.SearchController'. An optional parameter 
must be a reference type, a nullable type, or be declared as an 
optional parameter. 

我知道它來自GetProducts(long id, Search obj),但是如何將視圖中的模型作爲參數傳遞?

+0

您是否檢查瀏覽器中呈現的URL格式是什麼?它對'i'具有約束力嗎? –

+0

@SivaGopal,你的網址格式是什麼意思?來自'i'的值我將它作爲DataBase中ID的參數傳遞。 –

+0

是否只有'Model.producturl'條件是GetProducts方法可用的唯一部分?由於'int'可能自動適合'long',因此'@ Url.Action'不應該成爲問題。還請在開發者控制檯的「網絡」標籤中查看請求的圖片網址 –

回答

0

其實,我這樣做是這樣的:

Controller 
     public ActionResult GetProducts(Search obj) 
      { 
       GetSearchByDropdowns(); 

       Search c = null; 
       SqlConnection conn = new SqlConnection(); 
       conn.ConnectionString = "Data Source=DESKTOP-QR66UQL;Initial Catalog=ThB;Integrated Security=True"; 
       conn.Open(); 
       using (conn) 
       { 
        SqlCommand cmd = new SqlCommand("Select ProductImage from Search where Product='" + obj.SearchTextBox + "'"); 
        cmd.Connection = conn; 
        SqlDataReader reader = cmd.ExecuteReader(); 
        while (reader.Read()) 
        { 
         c = new Search(); 
         c.ImagePath = reader["ProductImage"].ToString(); 
         obj.S.Add(c); 
        } 
        return View("~/Views/Search/Index.cshtml", obj); 
       } 
      } 

View 
if (Model.S != null) 
    { 
     foreach (var item in Model.S) 
     { 
      <img src='@Url.Content(Model.ImagePath)' alt="Image" /> 
     } 
    } 

Mybe不是一個理想的解決方案,但預期它爲我工作。

0

我相信,如果你是這樣

<img src='@Url.Action("GetProducts", "Search", new{ id = i })' /> 

你不能看到放慢參數字典的這個錯誤產生的IMG SRC,在你的形象將不會在瀏覽器中渲染的情況下。

我認爲你是從按鈕或窗體的其他來源打這個方法。

相關問題