2017-02-14 4 views
0

どのようにモデルの違いの種類を渡すことができます(コントローラに戻ることに依存します)を表示するには?あなたが見ることができるように、それが表示され、差分タイプを返すことががビューのモデルの違いタイプを渡すには?

public ActionResult Index() 
    { 
     if (Session["username"] != null) 
     { 
      if (isAdmin(Session["username"].ToString())) 
      { 
       return View(db.Branches.ToList()); 
      } 
      else 
      { 
       int id = db.Users.Find(Session["username"]).branch_id; 
       return View(db.Branches.Find(id)); 
      } 
     } 
     else 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 
    } 

ユーザーに依存している管理者かどうか:

は、ここに私のコントローラです。

そして、このビューは、だけではない、単一の分岐

@model IEnumerable<Inspinia_MVC5_SeedProject.Models.Branch> 
<table class="table table-striped"> 
<tr> 
    <th> 
     @Html.DisplayNameFor(model => model.name) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.address) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.create_date) 
    </th> 
    <th></th> 
</tr> 
@foreach (var item in Model) { 
<tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.name) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.address) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.create_date) 
    </td> 
    <td> 
     @Html.ActionLink("Details", "Details", new { id=item.id }, new { @class = "btn btn-primary btn-sm"}) 
     @Html.ActionLink("Edit", "Edit", new { id=item.id }, new { @class = "btn btn-white btn-sm"}) 
     @Html.ActionLink("Delete", "Delete", new { id=item.id }, new { @class = "btn btn-white btn-sm"}) 
    </td> 
</tr> 
} 
</table> 

私はこれを試してみましたが、私はモデルの両方のタイプを返すとき、それだけで動作しますが、リストの枝の返却のために処理されます。私が欲しいものではありません。

@model Tuple<IEnumerable<Inspinia_MVC5_SeedProject.Models.Branch>, Inspinia_MVC5_SeedProject.Models.Branch> 

他のモデルタイプの別のビューを作成せずにこの問題を処理するにはどうすればよいですか?ありがとうと誰かが私を助けることができれば私は非常に適切になります。あなたは私にすべてのコードを掲載する必要はないかもしれませんが、いくつかのキーワードや解決方法を教えてください。

答えて

0

あなたViewを変更するつもりはないとユーザーなど管理の両方でまったく同じままならば、あなたの唯一の問題は、Viewコレクションを受け入れることなので、解決策はとしても、単一のオブジェクトを渡すことですコレクション: -

else 
{ 
    int id = db.Users.Find(Session["username"]).branch_id; 
    return View(db.Branches.Where(x => x.id == id)); 
} 

これはあなたの戻り値の型のID IEnumerable<T>はなく単一のオブジェクトので、あなたのビューはそれを解析することができます保証します。

+1

OMG。あなたは私の命を救いました。私は3時間以上何も考えずにそれを検索し、あなたは5分以内にそれを解決するだけです。そんなにありがとう。 –

関連する問題