2017-08-22 3 views
-1

私の意見に問題があります。現在私はフォームを作成しています。これは3つの1から多くの参照を持ち、基本的に3つのモデルからのデータを格納するモデルです。 Here's how my form looksユニークなIDだけを表示するASP.NET MVC

コミッション名や手数料の説明のように、私は複製する必要はありません。ユニークなデータ名と説明のみを投稿するには、剃刀コードの方法が必要ですが、メンバーとポジションの表は同じ方法で表示する必要があります。

私は道を見つけることができません、私は多くのことを試しましたが、それは助けになりませんでした。

はここで今

@model IEnumerable<CPO.Models.CommissionEmployeePosition> 
@{ 
ViewBag.Title = "Index"; 
Layout = "~/Views/Shared/_Layout.cshtml"; 
} 


<h2>Commissions</h2> 

<p> 
@Html.ActionLink("Create New", "Create") 
</p> 

<table class="table table-bordered table-hover" > 
<tr> 
    <th>Commission</th> 
    <th>Description</th> 
    <th>Members</th> 
    <th>Positions</th> 
    <th>Feedback</th> 
    <th>Actions</th> 
</tr> 
@foreach (var item in Model.OrderBy(m=>m.CommissionId)) 
{ 
<tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.Commission.Name) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.Commission.Description) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.Employee.Name) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.EmployeePosition.Name) 
    </td> 
    <td> 
     <p>@Html.ActionLink("List", "Index", "Annotation", new { id = 
item.Commission.Id }, null)</p> 
     <p>@Html.ActionLink("New", "Create", "Annotation", new { id = 
item.Commission.Id }, null)</p> 
    </td> 
    <td> 
     <p>@Html.ActionLink("Delete Commission", "Delete", "Commission", new 
{ id = item.Commission.Id }, null)</p> 
    </td> 
</tr> 
} 

</table> 

すべてのヘルプは高く評価されてのように私カミソリビューコードです。必要に応じてデータベースを挿入することができますが、それはどのように見えるのでしょうか?今のところ私はそれが必要とは思われません(私は間違っているかもしれません)。

編集: マイデータベースに値を挿入するアクション

foreach (var employee in model.Employees) 
       { 
        if (employee.Selected == true) 
        { 
         var commissionemployeeposition = new CommissionEmployeePosition(); 
         commissionemployeeposition.CommissionId = commission.Id; 
         commissionemployeeposition.EmployeeId = employee.Id; 
         if (model.SupervisorID == commissionemployeeposition.EmployeeId) 
          commissionemployeeposition.EmployeePositionId = (int)Position.Supervisor; 
         else 
          commissionemployeeposition.EmployeePositionId = (int)Position.Member; 

         //commission.CommissionEmployeePositions.Add(commissionemployeeposition); 
         unitOfWork.CommissionEmployeePositionRepository.Insert(commissionemployeeposition); 
        } 
       } 

編集:私は

public class CommissionEmployeePosition 
{ 
    public int CommissionId { get; set; } 
    public int EmployeeId { get; set; } 
    public int EmployeePositionId { get; set; } 
    public Commission Commission { get; set; } 
    public Employee Employee { get; set; } 
    public EmployeePosition EmployeePosition { get; set; } 
} 
+0

モデル内の各商品に異なる手数料名とその説明を記入してもよろしいですか? –

+0

テーブルに新しい値を追加するメソッドのコードを表示します –

+0

'Commission'の変数を宣言します。ループでは、 'item.Commission.Name'が' Commission'と一致するかどうかをチェックします。そうであれば、値を表示せずにそれを表示し、 'Commission'の値をリセットしてください。 –

答えて

1

私のモデルを追加し、あなたはNameDescriptionを複製持つアイテムを削除しようとしていますか?それは私が質問から集めたものなので、それが間違っている場合はごめんなさい。

あなたはカミソリの構文でこのような何かを行うことができるはず...

EDIT:名前と説明は、子供のオブジェクトです。

@foreach (var item in Model.OrderBy(m => m.CommissionId).GroupBy(m => new { m.Commission.Name, m.Commission.Description }).Select(group => group.First())) 
+0

}に送信してください。 Name、m.Description}では、メソッドグループを匿名型のプロパティに割り当てることはできません。 – HighSepton

+0

あなたのモデルを共有できますか? – ragerory

+0

質問に追加しました。 – HighSepton

関連する問題