Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在视图中查看ViewModel属性?_C#_Asp.net Mvc - Fatal编程技术网

C# 无法在视图中查看ViewModel属性?

C# 无法在视图中查看ViewModel属性?,c#,asp.net-mvc,C#,Asp.net Mvc,我仍在尝试使用ViewModels和IEnumerable/List作为属性。很明显,我遗漏了一些让我看不到我的IEnumberable的东西 我最终要做的是创建一个视图,该视图将显示未分配给某个组的未分配用户列表(在本例中称为巡逻,巡逻ID为0)。该表在每个成员旁边都有一个复选框。该表上方将是可用巡逻的下拉列表。管理员将进入页面查看未分配的用户,从顶部的DDL中选择一个巡逻,检查他希望分配给该巡逻的用户,然后提交表单,从DDL中传递巡逻ID并查找所有选定成员,以便使用该巡逻ID更新其记录 在下

我仍在尝试使用ViewModels和IEnumerable/List作为属性。很明显,我遗漏了一些让我看不到我的IEnumberable的东西

我最终要做的是创建一个视图,该视图将显示未分配给某个组的未分配用户列表(在本例中称为巡逻,巡逻ID为0)。该表在每个成员旁边都有一个复选框。该表上方将是可用巡逻的下拉列表。管理员将进入页面查看未分配的用户,从顶部的DDL中选择一个巡逻,检查他希望分配给该巡逻的用户,然后提交表单,从DDL中传递巡逻ID并查找所有选定成员,以便使用该巡逻ID更新其记录

在下面的视图中,当我遍历Scout属性时,我假设我能够在这一部分中使用Model.Scout,以便遍历并写出该IEnumerable中的所有成员

@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;im.Scout[i].IsSelected) @DisplayFor(m=>m.Scout[i].FirstName) @DisplayFor(m=>m.Scout[i].LastName) @DisplayFor(m=>m.Scout[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;im.Scout[i].IsSelected) @DisplayFor(m=>m.Scout[i].FirstName) @DisplayFor(m=>m.Scout[i].LastName) @DisplayFor(m=>m.Scout[i].PhonePrimary) }
我在这里遗漏了什么吗?

从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上?谢谢你