C# 显示ASP.NET MVC中的图像列表

C# 显示ASP.NET MVC中的图像列表,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我有一个应用程序,它接受ID并显示与公司关联的产品图像。有两个表,一个用于名为ImagesArchive的旧产品,另一个用于NewImages中的新产品。根据要求,一个ID在NewImages表中只能有一个产品。因此,我能够在我的代码中成功地做到这一点。但在ImagesArchive表中,由于我记录了该公司的所有旧产品,ID和产品之间存在一对多的关系。如何使用iframe&MVC GetOld(ID)显示列表??当找不到图像(即产品的URL不工作)时,捕获错误并显示的最佳方法是什么 <

我有一个应用程序,它接受ID并显示与公司关联的产品图像。有两个表,一个用于名为ImagesArchive的旧产品,另一个用于NewImages中的新产品。根据要求,一个ID在NewImages表中只能有一个产品。因此,我能够在我的代码中成功地做到这一点。但在ImagesArchive表中,由于我记录了该公司的所有旧产品,ID和产品之间存在一对多的关系。如何使用iframe&MVC GetOld(ID)显示列表??当找不到图像(即产品的URL不工作)时,捕获错误并显示的最佳方法是什么

   <head>
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
       <script type="text/javascript">
           function Imagepreview() {
               var ID = document.getElementById("ID").value;
               document.getElementById("companyImage").src = "api/Images/GetNew/" + ID;
               old();       
           }
           function old() {
               var ID = document.getElementById("KeyID").value;
               document.getElementById("companyOldImage").src = "api/Images/GetOld/" + ID;

           }
       </script>
       <style type="text/css">
           #companyImage {
               width: 181px;
           }
           #archiveImage {
               margin-left: 17px;
           }
       </style>
   </head>
    <body ">
      <div class="jumbotron" align="center">
         <h1>Images API</h1>    
         <p class="lead"></p>        
         <div class="col-md-4" align="center">       
            <input type="text" name="ID" id="ID"/>          
             <input type="button" value="Show Image" onclick="Imagepreview()"/>
             <br>
             <br>
              <iframe src="" id="companyImage" height="200" width="200"> </iframe>
              <iframe src="" id="companyOldImage" height="200" width="200"> </iframe>
         </div>
         <div id="response">
         </div>
      </div>
   </body>
</html>
--图像模型

 public class Images   
       {
           public int ID { get; set; }
           public string URL_FilePath { get; set; }
        }
   <head>
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
       <script type="text/javascript">
           function Imagepreview() {
               var ID = document.getElementById("ID").value;
               document.getElementById("companyImage").src = "api/Images/GetNew/" + ID;
               old();       
           }
           function old() {
               var ID = document.getElementById("KeyID").value;
               document.getElementById("companyOldImage").src = "api/Images/GetOld/" + ID;

           }
       </script>
       <style type="text/css">
           #companyImage {
               width: 181px;
           }
           #archiveImage {
               margin-left: 17px;
           }
       </style>
   </head>
    <body ">
      <div class="jumbotron" align="center">
         <h1>Images API</h1>    
         <p class="lead"></p>        
         <div class="col-md-4" align="center">       
            <input type="text" name="ID" id="ID"/>          
             <input type="button" value="Show Image" onclick="Imagepreview()"/>
             <br>
             <br>
              <iframe src="" id="companyImage" height="200" width="200"> </iframe>
              <iframe src="" id="companyOldImage" height="200" width="200"> </iframe>
         </div>
         <div id="response">
         </div>
      </div>
   </body>
</html>
HTML文件

   <head>
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
       <script type="text/javascript">
           function Imagepreview() {
               var ID = document.getElementById("ID").value;
               document.getElementById("companyImage").src = "api/Images/GetNew/" + ID;
               old();       
           }
           function old() {
               var ID = document.getElementById("KeyID").value;
               document.getElementById("companyOldImage").src = "api/Images/GetOld/" + ID;

           }
       </script>
       <style type="text/css">
           #companyImage {
               width: 181px;
           }
           #archiveImage {
               margin-left: 17px;
           }
       </style>
   </head>
    <body ">
      <div class="jumbotron" align="center">
         <h1>Images API</h1>    
         <p class="lead"></p>        
         <div class="col-md-4" align="center">       
            <input type="text" name="ID" id="ID"/>          
             <input type="button" value="Show Image" onclick="Imagepreview()"/>
             <br>
             <br>
              <iframe src="" id="companyImage" height="200" width="200"> </iframe>
              <iframe src="" id="companyOldImage" height="200" width="200"> </iframe>
         </div>
         <div id="response">
         </div>
      </div>
   </body>
</html>

函数Imagepreview(){
var ID=document.getElementById(“ID”).value;
document.getElementById(“companyImage”).src=“api/Images/GetNew/”+ID;
old();
}
函数old(){
var ID=document.getElementById(“KeyID”).value;
document.getElementById(“companyldimage”).src=“api/Images/GetOld/”+ID;
}
#公司形象{
宽度:181px;
}
#档案图像{
左边距:17px;
}

下面是我如何描述您使用API的过程。将ID向上传递给服务,并从服务返回图像的2个URL:

   <head>
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
       <script type="text/javascript">
           function Imagepreview() {
               var ID = document.getElementById("ID").value;
               document.getElementById("companyImage").src = "api/Images/GetNew/" + ID;
               old();       
           }
           function old() {
               var ID = document.getElementById("KeyID").value;
               document.getElementById("companyOldImage").src = "api/Images/GetOld/" + ID;

           }
       </script>
       <style type="text/css">
           #companyImage {
               width: 181px;
           }
           #archiveImage {
               margin-left: 17px;
           }
       </style>
   </head>
    <body ">
      <div class="jumbotron" align="center">
         <h1>Images API</h1>    
         <p class="lead"></p>        
         <div class="col-md-4" align="center">       
            <input type="text" name="ID" id="ID"/>          
             <input type="button" value="Show Image" onclick="Imagepreview()"/>
             <br>
             <br>
              <iframe src="" id="companyImage" height="200" width="200"> </iframe>
              <iframe src="" id="companyOldImage" height="200" width="200"> </iframe>
         </div>
         <div id="response">
         </div>
      </div>
   </body>
</html>
公共类ImageData
{
公共字符串OldUrl{get;set;}
公共字符串NewUrl{get;set;}
}
公共类ImageController:ApicController
{
//获取两个图像-旧图像和新图像
公共ImageData GetNew(字符串id)
{
返回新的图像数据
{
OldUrl=“/images/old/”+id,
NewUrl=“/images/new/”+id,
};
}
}
现在定义一些函数从API检索新URL。这里我有两个函数:1个用于API检索,另一个用于click事件:

   <head>
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
       <script type="text/javascript">
           function Imagepreview() {
               var ID = document.getElementById("ID").value;
               document.getElementById("companyImage").src = "api/Images/GetNew/" + ID;
               old();       
           }
           function old() {
               var ID = document.getElementById("KeyID").value;
               document.getElementById("companyOldImage").src = "api/Images/GetOld/" + ID;

           }
       </script>
       <style type="text/css">
           #companyImage {
               width: 181px;
           }
           #archiveImage {
               margin-left: 17px;
           }
       </style>
   </head>
    <body ">
      <div class="jumbotron" align="center">
         <h1>Images API</h1>    
         <p class="lead"></p>        
         <div class="col-md-4" align="center">       
            <input type="text" name="ID" id="ID"/>          
             <input type="button" value="Show Image" onclick="Imagepreview()"/>
             <br>
             <br>
              <iframe src="" id="companyImage" height="200" width="200"> </iframe>
              <iframe src="" id="companyOldImage" height="200" width="200"> </iframe>
         </div>
         <div id="response">
         </div>
      </div>
   </body>
</html>
/// Gets image URLs from the API

function getImagesFor(idForImage) {
       var imageUrl = $.get('api/Image/GetNew/' + idForImage)
            .done(function(data) {

               // Retrieve 'OldUrl' and 'NewUrl' from the JSON returned

               $("#oldImage").attr('src', data.OldUrl);
               $("#newImage").attr('src', data.NewUrl);
       });
}


// Hooks up the events - 'click' extracts the info and calls the service.
$(document).ready( function() {

   $("#imageButton").click(function() {
      var imageId = $("#imageId").text();
      getImagesFor(imageId);
      return false;
   });
}
下面是查看结果的基本HTML:

   <head>
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
       <script type="text/javascript">
           function Imagepreview() {
               var ID = document.getElementById("ID").value;
               document.getElementById("companyImage").src = "api/Images/GetNew/" + ID;
               old();       
           }
           function old() {
               var ID = document.getElementById("KeyID").value;
               document.getElementById("companyOldImage").src = "api/Images/GetOld/" + ID;

           }
       </script>
       <style type="text/css">
           #companyImage {
               width: 181px;
           }
           #archiveImage {
               margin-left: 17px;
           }
       </style>
   </head>
    <body ">
      <div class="jumbotron" align="center">
         <h1>Images API</h1>    
         <p class="lead"></p>        
         <div class="col-md-4" align="center">       
            <input type="text" name="ID" id="ID"/>          
             <input type="button" value="Show Image" onclick="Imagepreview()"/>
             <br>
             <br>
              <iframe src="" id="companyImage" height="200" width="200"> </iframe>
              <iframe src="" id="companyOldImage" height="200" width="200"> </iframe>
         </div>
         <div id="response">
         </div>
      </div>
   </body>
</html>
<script type="text/javascript">
   <!-- As above -->
</script>

<div>
  <input type="text" id="imageId"/>
  <input type="button"  id="imageButton"/><br/>
  <iframe src="" id="oldImage"/>
  <iframe src="" id="newImage"/>
</div>



我看到您正在手动从文件系统中取出图像,然后在HTML中将其向下推。你能直接引用它所在的目录吗?您将节省大量处理,而IIS将代替ASP.NET管道完成所有工作?此外-您是否有“无可用映像”映像,如果旧/新项目中不存在该映像,则可以将其用作备用映像?还有一个非主题整理-您正在使用jQuery,因此,使用简化的语法向上操作DOM-
document.getElementById(“companyImage”).src=“api/Images/GetNew/”+ID变成
$(“#companyImage”).attr(“src”,“api/Images/GetNew/”+ID)@DominicZukiewicz,例如,URL\u文件路径在DB中有值“”。除了使用MemoryStream,我如何显示图像?我也没有“无可用图像”图像。您只需直接返回URL,浏览器将自动加载它