如何在asp.net mvc中通过一些查询使用ajax填充页面加载的部分视图?
我正在从事Asp.NETMVC5项目。我有下面的代码,它工作正常,没有错误,我的问题是:在页面加载显示了所有记录,我想显示一个特定的记录。我怎么做 控制器:如何在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();
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>