C# 无法在视图中查看ViewModel属性?
我仍在尝试使用ViewModels和IEnumerable/List作为属性。很明显,我遗漏了一些让我看不到我的IEnumberable的东西 我最终要做的是创建一个视图,该视图将显示未分配给某个组的未分配用户列表(在本例中称为巡逻,巡逻ID为0)。该表在每个成员旁边都有一个复选框。该表上方将是可用巡逻的下拉列表。管理员将进入页面查看未分配的用户,从顶部的DDL中选择一个巡逻,检查他希望分配给该巡逻的用户,然后提交表单,从DDL中传递巡逻ID并查找所有选定成员,以便使用该巡逻ID更新其记录 在下面的视图中,当我遍历Scout属性时,我假设我能够在这一部分中使用Model.Scout,以便遍历并写出该IEnumerable中的所有成员C# 无法在视图中查看ViewModel属性?,c#,asp.net-mvc,C#,Asp.net Mvc,我仍在尝试使用ViewModels和IEnumerable/List作为属性。很明显,我遗漏了一些让我看不到我的IEnumberable的东西 我最终要做的是创建一个视图,该视图将显示未分配给某个组的未分配用户列表(在本例中称为巡逻,巡逻ID为0)。该表在每个成员旁边都有一个复选框。该表上方将是可用巡逻的下拉列表。管理员将进入页面查看未分配的用户,从顶部的DDL中选择一个巡逻,检查他希望分配给该巡逻的用户,然后提交表单,从DDL中传递巡逻ID并查找所有选定成员,以便使用该巡逻ID更新其记录 在下
@for (var i = 0; i < Model.Count(); i++)
存储库
public IEnumerable<PatrolMemberViewModel> SelectAllUnassigned()
{
using (DataContext db = new DataContext())
{
var results = (from p in db.Person
where p.IsActive == true
&& p.IsScout == true
&& p.PatrolId == 0
select new PatrolMemberViewModel
{
MemberId = p.PID,
FirstName = p.FirstName ?? string.Empty,
LastName = p.LastName ?? string.Empty,
EmailPrimary = p.EmailPrimary ?? string.Empty,
PhonePrimary = p.PhonePrimary ?? string.Empty,
PatrolId = p.PatrolId,
IsSelected = false
}
).OrderBy(o => o.LastName).ThenBy(o => o.FirstName).ToList();
return results;
}
}
public IEnumerable<PatrolName> SelectAllPatrols()
{
return db.PatrolNames;
}
public IEnumerable selectAllunasigned()
{
使用(DataContext db=newdatacontext())
{
var结果=(来自以db.Person表示的p)
其中p.IsActive==true
&&p.IsScout==true
&&p.PatrolId==0
选择new MemberViewModel
{
MemberId=p.PID,
FirstName=p.FirstName??string.Empty,
LastName=p.LastName??string.Empty,
EmailPrimary=p.EmailPrimary??string.Empty,
PhonePrimary=p.PhonePrimary??string.Empty,
巡逻ID=p.PatrolId,
IsSelected=false
}
).OrderBy(o=>o.LastName).ThenBy(o=>o.FirstName.ToList();
返回结果;
}
}
公共IEnumerable SelectAllPatrols()
{
返回db.name;
}
看法
@model-IList
@{
ViewBag.Title=“未分配”;
Layout=“~/Views/Shared/_Layout.cshtml”;
}
巡逻队
指派侦察兵巡逻。
@使用(Html.BeginForm(“Update”、“Patrol”、FormMethod.Post、new{enctype=“multipart/formdata”}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(false,“,new{@class=“alert-alert-danger”})
名字
姓
电子邮件
电话
@对于(var i=0;im[i].IsSelected)
@DisplayFor(m=>m[i].FirstName)
@DisplayFor(m=>m[i].LastName)
@DisplayFor(m=>m[i].PhonePrimary)
}
}
您的控制器正在返回类PatrolUnassignedViewModel的单个实例
public ViewResult Unassigned()
{
PatrolUnassignedViewModel unassinged = new PatrolUnassignedViewModel();
unassinged.Patrols = new SelectList(repository.SelectAllPatrols());
unassinged.Scout = repository.SelectAllUnassigned();
return View(unassinged);
}
您的视图需要一个IList
@model IList<ProjectName.ViewModels.PatrolUnassignedViewModel>
您的scout是一个IEnumerable,因此没有计数方法,因此应该是
public IList<PatrolMemberViewModel> Scout { get; set; }
public IList<PatrolMemberViewModel> SelectAllUnassigned()
{
}
public IList Scout{get;set;}
公共IList SelectAllunasigned()
{
}
你应该这样做你的循环
@for (var i = 0; i < Model.Scout.Count(); i++)
{
<tr>
<td class="text-center">
@Html.CheckBoxFor(m => m.Scout[i].IsSelected)
</td>
<td>
@Html.DisplayFor(m => m.Scout[i].FirstName)
</td>
<td>
@Html.DisplayFor(m => m.Scout[i].LastName)
</td>
<td>
<a href="mailto:@Model.Scout[i].EmailPrimary">@Model.Scout[i].EmailPrimary</a>
</td>
<td class="text-center">
@Html.DisplayFor(m => m.Scout[i].PhonePrimary)
</td>
</tr>
}
for(var i=0;i我在这里遗漏了什么吗?您的控制器正在返回类PatrolUnassignedViewModel的单个实例
public ViewResult Unassigned()
{
PatrolUnassignedViewModel unassinged = new PatrolUnassignedViewModel();
unassinged.Patrols = new SelectList(repository.SelectAllPatrols());
unassinged.Scout = repository.SelectAllUnassigned();
return View(unassinged);
}
您的视图需要一个IList
@model IList<ProjectName.ViewModels.PatrolUnassignedViewModel>
您的scout是一个IEnumerable,因此没有计数方法,因此应该是
public IList<PatrolMemberViewModel> Scout { get; set; }
public IList<PatrolMemberViewModel> SelectAllUnassigned()
{
}
public IList Scout{get;set;}
公共IList SelectAllunasigned()
{
}
你应该这样做你的循环
@for (var i = 0; i < Model.Scout.Count(); i++)
{
<tr>
<td class="text-center">
@Html.CheckBoxFor(m => m.Scout[i].IsSelected)
</td>
<td>
@Html.DisplayFor(m => m.Scout[i].FirstName)
</td>
<td>
@Html.DisplayFor(m => m.Scout[i].LastName)
</td>
<td>
<a href="mailto:@Model.Scout[i].EmailPrimary">@Model.Scout[i].EmailPrimary</a>
</td>
<td class="text-center">
@Html.DisplayFor(m => m.Scout[i].PhonePrimary)
</td>
</tr>
}
for(var i=0;i我在这里遗漏了什么吗?从GET action方法中,您正在传递一个对象
PatrolUnassignedViewModel
。但是您的视图绑定到未分配ViewModel
的集合。所以,改变你的观点,像
@model PatrolUnassignedViewModel
现在可以使用Model.Scout属性,它是一个集合
@model PatrolUnassignedViewModel
<h2>Total : @Model.Scout.Count()</h2>
@foreach(var item in Model.Scout)
{
<label>@item.FirstName</label>
}
@model巡逻未分配视图模型
总计:@Model.Scout.Count()
@foreach(Model.Scout中的var项)
{
@item.FirstName
}
通过GET action方法,您正在传递一个对象PatrolUnassignedViewModel
。但是您的视图绑定到未分配ViewModel
的集合。所以,改变你的观点,像
@model PatrolUnassignedViewModel
现在可以使用Model.Scout属性,它是一个集合
@model PatrolUnassignedViewModel
<h2>Total : @Model.Scout.Count()</h2>
@foreach(var item in Model.Scout)
{
<label>@item.FirstName</label>
}
@model巡逻未分配视图模型
总计:@Model.Scout.Count()
@foreach(Model.Scout中的var项)
{
@item.FirstName
}
你在说什么<代码>计数扩展方法是否在IEnumerable上?你在说什么<代码>计数扩展方法是否在IEnumerable上?谢谢你