0

FacebookアプリケーションにRazor(MVC 3のように)を使用しています。
私の_Layout.cshtml呼び出しRenderBody()は、Facebookユーザーに提供するように依頼したデータを含む本文を返します。ユーザーが特定のカテゴリに該当する場合 (たとえば、特定のグループの管理者である場合)、通常のユーザーは表示のみが可能ですが、アプリケーションに情報を送信することを許可します。
そのために、私はIndex.cshtmlに持っています:

@using samuraiscentraltrader.Models
@using Microsoft.AspNet.Mvc.Facebook.Models
@model MyAppUser
@{
    ViewBag.Title = "Home Page";
}
<article class="intro">
<span id="profilePicture">
    @if (Model.ProfilePicture != null && Model.ProfilePicture.Data != null)
    {
        <img src="@Model.ProfilePicture.Data.Url" />
    }
</span>
<h3>Welcome @Model.Name</h3>
@*<label>Email: @Model.Email</label>*@

@if(Model.Groups != null && Model.Groups.Data != null && Model.Groups.Data.Count > 0 &&
    Model.Groups.Data.Any(g=> g.ID=="xxxxxxxxxxxxxxx" && g.Administrator == "True"))
{
    <div>
        @Html.Partial("_Admin")
    </div>
}
else
{
    <p> blah blah blah.</p>
}
</article>

行を参照してください@Html.Partial("_Admin")。それは正しいアプローチですか?

私の_Admin.cshtmlには、

@model samuraiscentraltrader.Hubs.TradeInfoHub

<fieldset>
    <legend>TradeInfoHub</legend>

    <div class="display-label">
        @Html.DisplayNameFor(model => model.msg)
    </div>
    <div class="display-field">
        @Html.DisplayFor(model => model.msg)
    </div>
</fieldset>
<p>
    @Html.ActionLink("Edit", "Edit", new { /* id=Model.PrimaryKey */ }) |
    @Html.ActionLink("Back to List", "Index")
</p>

次の例外が発生しました:
System.InvalidOperationException: ディクショナリに渡されたモデル アイテムはタイプ 'samuraiscentraltrader.Models.MyAppUser' ですが、このディクショナリにはタイプ 'samuraiscentraltrader.Hubs.TradeInfoHub' のモデル アイテムが必要です。

前もって感謝します。

4

1 に答える 1

0

周囲はそのモデル型を として宣言し@model MyAppUser、部分は を使用し@model [...].TradeInfoHubます。別のモデルを指定しない限り、モデルは部分ビューに渡されます。そのため、例外が表示されます。

ビューは TradeInfoHub を想定しているため、それを提供する必要があります。

 @Html.Partial("_Admin", /*a TradeInfoHub instance*/)

または、次のような子アクションを呼び出すこともできます

@Html.Action("ShowAdminContent", "AdminTools")

AdminToolsController.ShowAdminContent次に、適切なコンテンツをレンダリングします。このように、元のビューは「フレーム」のモデルについて知る必要はありません。このようなページを作成する必要がある場合は、子アクション アプローチを好みます。

于 2013-01-16T16:02:08.723 に答える