2

~/Views/Category/_Categories にある _Categories という次の部分ビューがあります。

@model IEnumerable<MyBlogSite.Models.BlogPostCategory>

<ul>
@foreach (var item in Model)
{
    <li>@Html.DisplayFor(modelItem => item.Name)</li>
}
</ul>

~/Views/Blog/Index.cshtml に次のインデックス ビューがあります。

@model IEnumerable<MyBlogSite.Models.BlogPost>

@{
   ViewBag.Title = "Index";
 }

@Html.RenderPartial("~/Views/Category/_Categories.cshtml", ---- );

<p>
   @Html.ActionLink("New Blog Post", "Create")
</p>
<table>
<tr>
    <th>
        @Html.DisplayNameFor(model => model.Title)
    </th>       
    ...

上記のダッシュ (----) のスペースは、モデルを渡す方法を見つけようとしている場所です。Model.BlogPost のみを受け入れるため、Model.BlogPostCategory を使用できません。ここで見たいくつかの投稿に従って、小文字の「m」で「モデル」も試しました。

4

1 に答える 1

7

partialviewのビューモデルを作成し、そのデータを渡します。例:私のビューモデル

public class CompanyCreateViewModel
{
    public Company Company { get; set; }
    public IList<CompanyContact> CompanyContacts { get; set; }
    public IQueryable<ContactType> ContactTypes { get; set; }
}

部分的なビュー

@model Invoice.Model.HelperClasses.CompanyCreateViewModel
---
<div class="editor-field">
        @Html.TextBoxFor(model => model.Company.FullName)
        @Html.ValidationMessageFor(model => model.Company.FullName)
        @Html.TextBoxFor(model => model.Company.ShortName)
        @Html.ValidationMessageFor(model => model.Company.ShortName)
        @Html.TextBoxFor(model => model.Company.TIN)
        @Html.ValidationMessageFor(model => model.Company.TIN)
    </div>
    <div class="editor-field">
        @Html.TextBoxFor(model => model.Company.Address.Country)
        @Html.TextBoxFor(model => model.Company.Address.City)
        @Html.TextBoxFor(model => model.Company.Address.Street)
    </div>    
    ---

そして、 partialviewを呼び出して表示

@model Invoice.Model.HelperClasses.CompanyViewModel
---
<div id="CompanyCreateModal" class="modal hide fade">
    @{Html.RenderPartial("CompanyParts/CompanyCreateModal", new Invoice.Model.HelperClasses.CompanyCreateViewModel() { ContactTypes = Model.ContactTypes });
    }
</div>
----
于 2013-07-13T07:01:49.280 に答える