2013-11-22 28 views
0

我有我的看法两个div在同一页面上显示有关特定记录的详细信息,左边一个包含了所有的产品可供选择。我想在右侧div中的同一页面上显示所选产品的详细信息。当我第一次加载页面时,右侧div应该包含第一条记录的详细信息。之后,当我点击任何链接时,它应该改变细节。我是MVC和实体框架的新手。我试图做到这一点,但不知道。如果我想在点击产品超链接后在下一页显示详细信息,我可以这样做。请尝试解决我的问题。谢谢!如何在ASP.net MVC

Products.cshtml:

@model List<productList.Models.tbl_product> 

<div class="product"> 
    <ul class="list"> 
     @foreach(var item in Model) 
     { 
      <li> 
       <a href='@Url.Action("Product","Home",new {id = item.ProductId })'> 
        <span class="ProductName">@item.ProductName</span> 
       </a> 
      </li> 
      </span></a> 
</div> 

<div class="productDetails"> 
    <ul class="listdetails"> 
     @foreach(var item in Model) 
     { 
      <li> 
       <span class="ProductName">@item.ProductName</span> 
       <div class="ProductDesc"> 
        @item.ProductDetails 
       </div> 
      </li> 
     } 

HomeController.cs:

public ActionResult Product() 
{ 
    return View(dbentity.tbl_product.ToList()); 
} 
+0

使用Ajax调用这个。构建一个局部视图来显示点击项目的细节并刷新第一个div的部分点击。在这里看到我的答案 –

+0

你可以给这个类型的问题的一些例子的链接..... – user2802591

+0

基本上你需要两个操作方法,主视图,partialview和代码为ajax调用。我对我的回答更新:) –

回答

0

使用的RenderPartial第一个产品负载,即使用jQuery阿贾克斯后,加载第一其它

控制器动作产品列表负载

public ActionResult Product() 
{ 
    return View(dbentity.tbl_product.ToList()); 
} 

PartialView.cshtml

@model Product 

<label>Name:</label>@model.Name 

在主视图

@model IList<Product> 
<div class="product"> 
<ul class="list"> 
@foreach(var item in Model) 
{ 
<li> <a [email protected]("ProductDetail","Home",new {id=item.ProductId})' 
<span class="ProductName"> @item.ProductName</span></a></li>  
} 
</ul> 
</div> 

<div id="product-detail"> 
@{Html.RenderPartial("PartialView", Model.FirstOrDefault());} 
</div> 

还需要另一个动作装载每个产品

public ActionResult ProductDetail(int id) 
{ 
var model=products.Find(id); 
return ("PartialView",model); 
} 

AJAX调用

$("div.product a").click(function(e){ 

    var url=this.href; 
    $.get(url,{},function(data){ 
    $('#product-detail').html(data); 
    }); 
    e.preventDefault(); 

}); 
+0

我试图使用部分视图,但打开一个新页面,这是部分视图和记录的详细信息显示在那里。我想在同一页上。 – user2802591

+0

@ user2802591,在上面的代码中添加了'e.preventDefault()',这将防止在新窗口中打开结果。 –