Asp.net mvc 4 如何从不同的模型/控制器渲染局部视图?
我有以下称为_Categories的局部视图,位于~/Views/Category/_Categories中:Asp.net mvc 4 如何从不同的模型/控制器渲染局部视图?,asp.net-mvc-4,partial-views,Asp.net Mvc 4,Partial Views,我有以下称为_Categories的局部视图,位于~/Views/Category/_Categories中: @model IEnumerable<MyBlogSite.Models.BlogPostCategory> <ul> @foreach (var item in Model) { <li>@Html.DisplayFor(modelItem => item.Name)</li> } </ul> @model
@model IEnumerable<MyBlogSite.Models.BlogPostCategory>
<ul>
@foreach (var item in Model)
{
<li>@Html.DisplayFor(modelItem => item.Name)</li>
}
</ul>
@model IEnumerable
@foreach(模型中的var项目)
{
- @DisplayFor(modelItem=>item.Name)
}
我在~/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 IEnumerable
@{
ViewBag.Title=“Index”;
}
@RenderPartial(“~/Views/Category/_Categories.cshtml”,-----);
@ActionLink(“新博客文章”,“创建”)
@DisplayNameFor(model=>model.Title)
...
在上面的破折号(--)中,我一直在试图找出如何传递模型。我无法使用Model.BlogPostCategory,因为它只接受Model.BlogPost。根据我在这里看到的几篇文章,我还尝试了小写字母“m”的“model” 我为我的partialview创建viewmodel,然后传递它的数据。例如:
我的视图模型
public class CompanyCreateViewModel
{
public Company Company { get; set; }
public IList<CompanyContact> CompanyContacts { get; set; }
public IQueryable<ContactType> ContactTypes { get; set; }
}
公共类公司CreateViewModel
{
上市公司{get;set;}
公共IList CompanyContacts{get;set;}
公共IQueryable联系人类型{get;set;}
}
局部视图
@model Invoice.model.HelperClasses.CompanyCreateViewModel
---
@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)
@Html.TextBoxFor(model=>model.Company.Address.Country)
@TextBoxFor(model=>model.Company.Address.City)
@Html.TextBoxFor(model=>model.Company.Address.Street)
---
并通过调用partialview查看
@model Invoice.model.HelperClasses.CompanyViewModel
---
@{Html.RenderPartial(“CompanyParts/companyCreateModel”,newinvoice.Model.HelperClasses.CompanyCreateViewModel(){ContactTypes=Model.ContactTypes});
}
----
@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>
---
@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>
----