如何在asp.net mvc中通过一些查询使用ajax填充页面加载的部分视图?

如何在asp.net mvc中通过一些查询使用ajax填充页面加载的部分视图?,ajax,asp.net-mvc,asp.net-mvc-4,razor,model,Ajax,Asp.net Mvc,Asp.net Mvc 4,Razor,Model,我正在从事Asp.NETMVC5项目。我有下面的代码,它工作正常,没有错误,我的问题是:在页面加载显示了所有记录,我想显示一个特定的记录。我怎么做 控制器: public ActionResult GoodDetails(int id) { HomeVM vm = new HomeVM(); var goodDetails = db.GoodDetails.Where(p => p.FKSubGoods == id).ToList();

我正在从事Asp.NETMVC5项目。我有下面的代码,它工作正常,没有错误,我的问题是:在页面加载显示了所有记录,我想显示一个特定的记录。我怎么做

控制器:

public ActionResult GoodDetails(int id)
    {
        HomeVM vm = new HomeVM();
        var goodDetails = db.GoodDetails.Where(p => p.FKSubGoods == id).ToList();
        vm.GoodDetails = goodDetails;
        return View(vm);

    }
public PartialViewResult GoodDetailsAjax(int id)
    {
        HomeVM vm = new HomeVM();
        var GoodDetailsAjax = db.GoodDetails.Where(p => p.DetailsGoodID == id).ToList();
        vm.GoodDetails = GoodDetailsAjax;
        return PartialView("_GoodDetailsAjax", vm);
    }
_GoodDetailsAjax.cshtml:

 @model NP1.ViewModels.HomeVM
 <div>
    @foreach (var item in Model.GoodDetails)
    {
    <img class="img-responsive" src="@Url.Content(item.DetailsImage1.ToString())">
    <img class="img-responsive" src="@Url.Content(item.DetailsImage2.ToString())">
    <img class="img-responsive" src="@Url.Content(item.DetailsImage3.ToString())">
    <img class="img-responsive" src="@Url.Content(item.DetailsImage3.ToString())">

}
</div>

具体记录是什么?您需要使用
{Html.RenderAction(“GoodDetailsAjax”,new{id=someValue});}
来调用该方法并将要显示的
id
传递给它。谢谢,我使用
{Html.RenderAction(“GoodDetailsAjax”,new{id=5});}
并且它可以工作并显示一个
5id
的记录。例如,在父视图中,我有
Home/GoodDetails/3
,我有两个id为3的(子)记录。我想让你看看这个孩子@Stephen MueckeIts不清楚你在问什么。为什么
GoodDetailsAjax
返回
HomeVM
,而您似乎只显示
GoodDetails
属性?(部分中的模型应该是
IEnumerable
。对不起,我的英语很差,我不知道如何解释我的问题:(.当我转到
http://localhost:35676/Home/GoodDetails/3
,两条记录显示:
record1=fk=3,ID=5和record2=fk=3,ID=6
。这些记录中的每一条都有一些其他字段,我想在页面中加载一个
ID=5
ID=6
并显示其字段。在
{Html.RenderAction中需要做哪些更改(“GoodDetailsAjax”,新的{id=5});}
。很抱歉收到您的邮件time@shimaamini您正在从
GoodDetailsAjax
操作返回列表。如果您想先录制,则只返回第一条记录或特定记录的列表,然后添加业务逻辑以仅返回记录的1条。同意@StephenMuecke的意见,我们应改为
GoodDetail
模式l如果要一次只使用一条记录,或者如果超过1条,则使用
IEnumerable
<div>
@foreach (var item1 in Model.GoodDetails)
{
    @Ajax.ActionLink("LinkText", "GoodDetailsAjax", new { id = @item1.DetailsGoodID }, new AjaxOptions()
{
HttpMethod = "GET",
UpdateTargetId = "DivAjax",
InsertionMode = InsertionMode.Replace
}
)
      <input type="image" src="@Url.Content(item1.DetailsSmallImage1.ToString())">


}
</div>

 <div id="DivAjax">
     @{Html.RenderPartial("_GoodDetailsAjax", Model);}
 </div>