0

学習体験として、自分用のプロジェクトマネージャーのようなアプリを作成しています。私は ASP.NET MVC3 を使用しており、jQuery を使用してさらに先へ進む予定です。今のところ、Ninject/Moq を使用してモデルといくつかのモック リポジトリを作成しました。

モデル:

public class Project
{
    public int ProjectID { get; set; }

    public string ProjectName { get; set; }

    public string Description { get; set; }

    public string[] AssignedEmployees { get; set; }

    public string[] ProjectGoals { get; set; }

    public DateTime ProjectStart { get; set; }

    public DateTime ProjectDeadLine { get; set; }

    public string Notes { get; set; }
}

モック リポジトリ:

Mock<IProjectRepository> projectMock = new Mock<IProjectRepository>();
        projectMock.Setup(m => m.Projects).Returns(new List<Project> 
        {
            new Project {ProjectID = 1234, ProjectName = "Email redesign", Description = "New email", AssignedEmployees = new string[] {"Ian", "Danny", "Mikey"}},
            new Project {ProjectID = 4321, ProjectName = "Update Cart", Description = "Make cart smoother function better"},
            new Project {ProjectID = 4567, ProjectName = "New social widget", Description = "More social media buttons"}
        }.AsQueryable());

        ninjectKernel.Bind<IProjectRepository>().ToConstant(projectMock.Object);

意見:

@foreach  (var p in Model){
<div class='project'>
    <h3>@p.ProjectName</h3>
    <p>@p.Description</p>
    <ul class='assigned-employees'>
        <li class="employee">
        @p.AssignedEmployees
        </li>
    </ul>
</div>
}

問題は、AssignedEmployees 配列のビューでレンダリングされるのはすべてSystem.String[]. 私は試し.ToStringてみましたが、配列内の各項目をループして、それぞれを個別のliに出力するループを.ToArray作成しようとしました。foreach

配列内のすべての名前を出力するにはどうすればよいですか? これに配列を使用することは最善の解決策ですか? アプリを使用している誰もがプロジェクトに必要な数の従業員を割り当てることができるようにしたいので、配列が最適であると考えました。

4

1 に答える 1

2

foreach ループまたは for ループを使用できるはずです。呼び出し.ToString()は印刷するだけで、配列System.String[]を呼び出し.ToArray()ても何もしません

<ul class='assigned-employees'>
   @{foreach(var emp in p.AssignedEmployees){
       <li class="employee">@emp</li>
  }}
</ul>

また

<ul class='assigned-employees'>
   @{for(var i = 0; i<p.AssignedEmployees.Count(); i++){
       <li class="employee">@p.AssignedEmployees[i]</li>
  }}
</ul>

また、配列を列挙する前に配列が存在するかどうかを確認してください。存在しない場合、実行時例外が発生します

<ul class='assigned-employees'>
   @{if(p.AssignedEmployees != null && p.AssignedEmployes.Any()){
     foreach(var emp in p.AssignedEmployees){
       <li class="employee">@emp</li>
     }
  }}
</ul>
于 2013-04-25T16:42:58.713 に答える