我有一个控制器可以返回特定类别的业务
public ViewResult Browse(int? id)
{
var companyquery = from c in db.Advertises
where c.CategoryID == id && c.showentry
select c;
return View(companyquery);
}
当用户点击分类时,前三个列表是“优先级”列表。我在我的模型中为优先级1,2和3创建了三个bool。我编写了以下三个控制器,它们返回部分视图以获得这些结果;
public ActionResult P1()
{
var presult1 = from ap in db.Advertises
where ap.priority1
select ap;
return View(presult1);
}
public ActionResult P2()
{
var presult2 = from bp in db.Advertises
where bp.priority2 && bp.showentry == true
select bp;
return View(presult2);
}
public ActionResult P3()
{
var presult3 = from cp in db.Advertises
where cp.priority3
select cp;
return View(presult3);
}
这些部分视图包含在我的“浏览”(参见第一个控制器)视图中,如此;
<div id="pri1">
@Html.Partial("P1")
</div>
<div id="pri2">
@Html.Partial("P2")
</div>
<div id="pri3">
@Html.Partial("P3")
</div>
@foreach (var item in Model)
{
<div class="company">
<div class="compimg">
<img src=@Html.DisplayFor(modelItem => item.ImageUrl) alt ="pic" />
</div>
<div class="compname">
@Html.DisplayFor(modelItem => item.companyname)
</div>
<ul class="social......
我希望这包括页面顶部的优先级列表和它下面的正常列表。相反,这三个控制器返回相同的结果。这是我模型的相关部分;
[DisplayName("Priority 1 listing?")]
public bool priority1 { get; set; }
[DisplayName("Priority 2 listing?")]
public bool priority2 { get; set; }
[DisplayName("Priority 3 listing?")]
public bool priority3 { get; set; }
[DisplayName("Display Listing?")]
public bool showentry { get; set; }
我在这里写什么?提前谢谢!
修改
这是单独的控制器和完整视图,返回正常;
public class P1Controller : Controller
{
private DataContext db = new DataContext();
//
// GET: /P1/
public ActionResult P1()
{
var presult1 = from ap in db.Advertises
where ap.priority1
select ap;
return View(presult1);
}
}
}
@model IEnumerable<NewAtAClick.Models.Advertise>
@{
ViewBag.Title = "P1";
}
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
CategoryID
</th>
<th>
AdName
</th>
<th>
phone
</th>
<th>
prefcontact
</th>
<th>
phonecontact
</th>
<th>
priority1
</th>
<th>
priority2
</th>
<th>
priority3
</th>
<th>
showentry
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CategoryID)
</td>
<td>
@Html.DisplayFor(modelItem => item.AdName)
</td>
<td>
@Html.DisplayFor(modelItem => item.phone)
</td>
<td>
@Html.DisplayFor(modelItem => item.prefcontact)
</td>
<td>
@Html.DisplayFor(modelItem => item.phonecontact)
</td>
<td>
@Html.DisplayFor(modelItem => item.priority1)
</td>
<td>
@Html.DisplayFor(modelItem => item.priority2)
</td>
<td>
@Html.DisplayFor(modelItem => item.priority3)
</td>
<td>
@Html.DisplayFor(modelItem => item.showentry)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.AdvertiseID }) |
@Html.ActionLink("Details", "Details", new { id=item.AdvertiseID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.AdvertiseID })
</td>
</tr>
}
</table>
答案 0 :(得分:2)
而不是
@Html.Partial("P1")
尝试:
@Html.Action("P1")
等P2
和P3
。这样您实际上将调用相应的控制器操作。有关Html.Action
帮助程序的详细信息,请查看following blog post。另外,为了避免任何递归问题,请确保在3控制器操作中返回PartialView
而不是View
或P1.cshtml
部分集Layout = null
内。
答案 1 :(得分:0)
根据事物的外观,您实际上并未调用P1
,P2
和P3
的操作,您只是使用相同的名称来删除部分视图。
您是否确认无论您在部分视图中进行的操作是否正确?