【问题标题】:ASP.Net MVC 4 Display Single Row of Data using buttonASP.Net MVC 4 使用按钮显示单行数据
【发布时间】:2016-04-19 08:33:49
【问题描述】:

我正在开发一个 ASP.Net MVC 4 应用程序并尝试显示数据库中的单行数据而不是所有行。

我正在设计的网站有一个按钮列表,当单击每个按钮时,会显示数据库中相应行的数据,例如Button1 - Row1、Button2 - Row2 等...

目前这也显示在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"/>

有谁能帮我在点击按钮时显示相应行的数据吗?

【问题讨论】:

  • 您是要重定向到视图以显示详细信息,还是在同一页面上显示详细信息?
  • 有很多方法可以做到这一点。你的意思是如何从按钮或调用“OneMovie”?
  • 我希望数据与按钮显示在同一页面上。当前它转到 Movies/OneMovie,我想在索引页面中的电影上。
  • 如果您希望能够在同一屏幕中打开所有行,我将加载视图中的所有按钮和行并使用 javascript 或 jquery 打开行。
  • 思路是点击相应按钮时数据会显示在一个div中。

标签: c# jquery asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

好的,那么当您生成按钮时,您循环一个集合只是为了获取所有电影的 id,这是您需要的按钮:

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

设置到您的视图中id= model.MovieId

这将允许您在操作中发出获取请求:

    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);
}

【讨论】:

  • 我可以像 OneMovie 一样在索引中使用吗?
  • 目前我无法在我的索引页面上显示任何数据。我在其中有这段代码 - return View(db.Movies.ToList());
  • 应该从 URL 调用索引。据我了解,我认为您可以这样做:在索引加载中,您加载第一部电影和所有这些电影的按钮。然后在每个按钮上单击您会在您正在处理的 div 的那部分显示一些部分视图。
  • 我希望数据与按钮显示在同一页面上。
  • 是的,这就是我说局部视图的原因。或者您可以选择 JSON 解决方案。
【解决方案2】:
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;
}

【讨论】:

  • 我刚刚尝试过这个解决方案,但它是如何使用按钮工作的?
  • 大致就是这样设置的,这里不要打开MVC项目。但我认为它应该适用于任何事情......你只需要 onclick 事件。如果你使用 jquery,你还可以添加一点动画
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
  • 2010-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多