1

別の cshtml ファイルから取得した 1 つの cshtml ファイルの情報をどのように使用できるかは、まだよくわかりません。私のプログラムはギャラリーで構成されています。ユーザーが画像の 1 つをクリックすると、単に画像の URL のみを含むページに移動するのではなく、画像とその画像に関連する情報を表示する別のビューにリダイレクトしたいと考えています。これが私の失敗した試みの関連コードです:

コントローラ:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var client = new WebClient();
        var response = client.DownloadString(Url.Action("gallery", "photo", null, Request.Url.Scheme));
        var jss = new JavaScriptSerializer();
        var result = jss.Deserialize<List<Photo>>(response);

        return View();
    }
    public ActionResult FullImage(Photo m)
    {
        return View();
    }
}   

意見:

@section mainContent {
  <ul class="thumbnails">
    @foreach (var photo in Model)
    {
      <li class="item">
         <a href='@Url.Action("FullImage", "Home", new {imageUrl="~/photos/" + photo.FileName, title= photo.Title, description= photo.Description})'>
             <img alt="@photo.Description" src="@Url.Content("~/photos/" + photo.FileName)" class="thumbnail-border" width="180" />
         </a>
         <span class="image-overlay">@photo.Title</span>
      </li>
    }
  </ul>
}

モデル:

namespace PhotoGallery.Models
{
    public class Photo
    {
        public string Title { get; set; }
        public string FileName { get; set; }
        public string Description { get; set; }
        public string imageUrl { get; set; }
    }
}
4

1 に答える 1

1

アクション リンクを使用してモデルにバインドすることはできません。主キーまたは一意のキーをアクションに渡し、キーに基づいてアクションでモデルを見つける必要があります。

例として、ビューでこれを行うことができます。

@section mainContent {
  <ul class="thumbnails">
    @foreach (var photo in Model)
    {
      <li class="item">
         <a href='@Url.Action("FullImage", "Home", new { fileName = photo.FileName})'>
             <img alt="@photo.Description" src="@Url.Content("~/photos/" + photo.FileName)" class="thumbnail-border" width="180" />
         </a>
         <span class="image-overlay">@photo.Title</span>
      </li>
    }
  </ul>
}

次に、アクションには次のものが含まれます。

public ActionResult FullImage(string fileName)
{
    // Example of some code to get the photo from the repository. It's better to use a photoID instead of the fileName.
    var photo = db.Photos.FindPhoto(fileName);
    return View();
}
于 2013-07-29T15:21:47.533 に答える