1

だから私はこのaps.net mvcプロジェクトを持っていて、サービスレイヤー、モデルビュー、コントローラー、ビューページを作成しました。しかし、結果をビュー ページに表示するのに問題があります。サービスレイヤーで特定のlinqステートメントを渡すことでこれを開始しているので、それを返してビューに表示できるはずです。ここに私が持っているものがあります:

サービス:

public IEnumerable<RoleUser> GetUsers(int sectionID)
    {
        var _role = DataConnection.GetRole<RoleUser>(9, r => new RoleUser
        {
            Name = RoleColumnMap.Name(r),
            Email = RoleColumnMap.Email(r)
        }, resultsPerPage: 20, pageNumber: 1);
        return _role;
    }

モデル:

public partial class Role
{
    public RoleView()
    {
        this.Users = new HashSet<RoleUser>();
    }
    public ICollection<RoleUser> Users { get; set; }
}

public class RoleUser
{
    public string Name { get; set; }
    public string Email { get; set; }
}

コントローラ:

public ActionResult RoleUser(RoleView rvw)
    {
        var rosterUser = new RosterService().GetUsers();
        ViewBag.RosterUsers = rosterUser;
        return View();
    }

意見:

<div>
<span>@Model.Name</span>
</div>

何が欠けているか、間違っているかはわかりませんが、ヒントは素晴らしいでしょう。私は基本的に、接続が正しく、拡張する前に機能があることを確認するためにテストしている linq ステートメントから結果を返したいと考えています。ありがとう...

4

1 に答える 1

1

さて、あなたが提供したコードから外れる場合、これがどのようにコンパイルされるかはわかりません。

public partial class Role
{
    public RoleView()
    {
        this.Users = new HashSet<RoleUser>();
    }
    public ICollection<RoleUser> Users { get; set; }
}

それは次のように感じます:

public partial class RoleView

そして、私はあなたのビューの上部にこれが欠けていると言います:

@model NamespaceToClass.RoleView

そして、私はあなたがこれを発行することができないだろうと言います:

@Model.Name

RoleUserあなたのモデルではないからです。ユーザーをループする必要があります。

@foreach (RoleUser ru in Model.Users)

そして、そのループ内で、これを使用して HTML を作成できます。

ru.Name

しかし、私はあなたのコントローラーにも質問します。現在、そのモデルを返すモデルを受け取っています。ここにはいくつかのコードがありませんが、一般的に言えば、メソッド内には次のコードがあります。

public ActionResult RoleUser(RoleView rvw)

実際にデータを取得し、モデルを構築して、それを返します。

var users = serviceLayer.GetUsers(...);

// now construct the RoleView model
var model = ...

return View(model);

私たちの会話に基づいて、現在、コントローラーには次のようなものがあります。

public ActionResult View(int id) 
{ 
    // get the menu from the cache, by Id 
    ViewBag.SideBarMenu = SideMenuManager.GetRootMenu(id); 
    return View(); 
} 

public ActionResult RoleUser(RoleView rvw) 
{ 
    var rosterUser = new RosterService().GetUsers(); 
    ViewBag.RosterUsers = rosterUser; 
    return View(); 
}

しかし、実際には次のようにする必要があります。

public ActionResult View(int id) 
{ 
    // get the menu from the cache, by Id 
    ViewBag.SideBarMenu = SideMenuManager.GetRootMenu(id); 

    var rosterUser = new RosterService().GetUsers(); 
    ViewBag.RosterUsers = rosterUser; 

    return View(); 
} 

URLにIDを渡しているため、このアクションを実行しているサイドバーからこのページを起動しているためです。他のアクションも必要ありません。

于 2013-03-27T19:00:31.820 に答える