2016-04-19 13 views
1

ASP.Net MVC 4アプリケーションで作業していて、すべての行ではなくデータベースから単一の行のデータを表示しようとしています。ASP.Net MVC 4ボタンを使用して単一行のデータを表示

私が設計しているウェブサイトにはボタンのリストがあり、各ボタンをクリックするとデータベースの対応する行のデータが表示されます。ボタン1 - 行1、ボタン2 - 行2等...

現在、これもhttp://myexample/Movies/OneMovieに表示され、私は私が私のコントローラを持っているコードはこれですhttp://myexample/Movies/

に表示されたい:

public ActionResult OneMovie(int id = 0) 
{ 
    Movie movie = db.Movies.Single(m => m.ID == id); 

    if (movie == null) 
    { 
     return HttpNotFound(); 
    } 

    return View(movie); 
} 

私のコードのためのボタンがある:

<input id="Button1" type="button" value="button" name="id"/> 
<input id="Button2" type="button" value="button" name="id"/> 

誰もが、ボタンがクリックされたとき、私は、対応する行のための私のデータを表示するために助けることができますか?

+0

あなたはに欠けています詳細に表示するビューにリダイレクトする、または同じページに詳細を表示しますか? –

+0

それを行う方法はたくさんあります。ボタンから「OneMovie」を呼び出す方法を意味しますか? –

+0

ボタンと同じページにデータを表示したいのですが。現在の映画/ OneMovieに行く、私はインデックスページにある映画になりたい。 – TerrorTot38

答えて

1

OK、あなたがボタンを生成するとき、あなたはループコレクションはちょうどここにあなたが必要とするボタンで、すべての映画のIDを取得する:あなたのビューIDに

<input type="button" value="Go Somewhere Else" onclick="location.href='@Url.Action("OneMovie", "ControllerName", new { id=1 })'" /> 

を設定するには、= model.MovieId

これは、アクションのGET要求を行うことができます:

public ActionResult OneMovie(int id) 
    { 

     return View(); 
    } 

編集のためにAJAXあなたのインデックスページにソリューション

を得る:

function getMovieById(movieId) { 
    var url = "/Home/OneMovie"; 
    $.getJSON(url, { id: "movieId"}, function (data) { 
     /* 
     put movie into div here 
     */ 
    }); 
} 

あなたのボタンは次のようになります:

<input type="button" value="Go Somewhere Else" onclick=getMovieById(1) /> 

とアクション:

public JsonResult OneMovie(int Id) 
{ 
... 
var items = db.Movies.Where... 
return Json(items , JsonRequestBehavior.AllowGet); 
} 
+0

OneMovieと同じ方法でインデックスを使用できますか? – TerrorTot38

+0

現在、インデックスページにデータを表示することはできません。このコードでは、ビューを返します(db.Movies.ToList()); – TerrorTot38

+0

インデックスはURLから呼び出されるはずです。私が理解しているように、あなたは次のようなものに行くことができると思います: インデックスロードでは、最初のムービーとすべてのボタンをロードします。各ボタンをクリックすると、あなたが作業していたdivのその部分の部分ビューが表示されます。 –

0
public class MoviesModel 
{ 
    public List<Movie> Movies {get;set;} 
} 

    //get all movies and return to view 
    public ActionResult AllMovies() 
    {  
     MoviesModel model=new MoviesModel(); 
     model.Movies= db.Movies.ToList(); 
     if (model.Movies== null || model.Movies.Count==0) 
     { 
      return HttpNotFound(); 
     } 

     return View(model); 
    } 


//html view 
    @model MoviesModel 
    @foreach(var movie in Model.Movies){ 
     <input id="Button1" type="button" value="button" name="movie.Id" onclick="ButtonClicked(movie.Id)"/> 
     <div class="hidden" id='movie.Id'> 
      <span>...movie info...</span> 
     </div> 
    } 

//javascript 

function ButtonClicked(id) 
{ 
    var element= Document.GetEllementById(id) 
    //set css class visible 
} 


//CSS 
.visible 
{ 
display:block; 
} 

.hide 
{ 
display:none; 
} 
+0

私はこのソリューションを試しましたが、ボタンを使ってどのように動作しますか? – TerrorTot38

+0

これは大まかにセットアップですが、ここにはMVCプロジェクトがありません。しかし、私はそれが何かに動作するはずだと思う...あなたはonclickイベントが必要です。 jqueryを使用する場合は、アニメーションを少し追加することもできます –

関連する問題