C# MVC4-如何将模型数据传递给局部视图?

C# MVC4-如何将模型数据传递给局部视图?,c#,asp.net-mvc,model,partial-views,asp.net-mvc-views,C#,Asp.net Mvc,Model,Partial Views,Asp.net Mvc Views,我正在构建一个配置文件页面,其中将包含许多与特定模型(租户)相关的部分——关于我、我的首选项——诸如此类的内容。这些部分中的每一部分都将是部分视图,以允许使用AJAX进行部分页面更新 当我在TenantController中单击一个ActionResult时,我能够创建一个强类型视图,并且模型数据被传递到视图。我不能用片面的观点来实现这一点 我创建了一个局部视图\u租户详细信息: @model LetLord.Models.Tenant <div class="row-fluid">

我正在构建一个配置文件页面,其中将包含许多与特定模型(租户)相关的部分——关于我、我的首选项——诸如此类的内容。这些部分中的每一部分都将是部分视图,以允许使用AJAX进行部分页面更新

当我在TenantController中单击一个
ActionResult
时,我能够创建一个强类型视图,并且模型数据被传递到视图。我不能用片面的观点来实现这一点

我创建了一个局部视图
\u租户详细信息

@model LetLord.Models.Tenant
<div class="row-fluid">
    @Html.LabelFor(x => x.UserName) // this displays UserName when not in IF
    @Html.DisplayFor(x => x.UserName) // this displays nothing
</div>
如果我将代码包装在
\u tenantdetailsparial
inside
@If(model!=null){}
中的DIV中,则页面上不会显示任何内容,因此我猜会有一个空模型传递给视图


为什么当我从
ActionResult
创建强类型视图时,“会话”中的用户会被传递到视图?如何将“会话”中的用户传递到不是从
ActionResult
创建的局部视图?如果我遗漏了有关该概念的某些内容,请解释。

您实际上并没有将模型传递给Partial,而是传递了一个
新的ViewDataDictionary()
。试试这个:

@model LetLord.Models.Tenant
<div class="row-fluid">
    <div class="span4 well-border">
         @Html.Partial("~/Views/Tenants/_TenantDetailsPartial.cshtml", Model)
    </div>
</div>
@model-LetLord.Models.Tenant
@Html.Partial(“~/Views/Tenants/_tenantdetailsparial.cshtml”,Model)

此外,这也可以使它工作:

@{
Html.RenderPartial("your view", your_model, ViewData);
}


有关MVC中RenderPartial和类似HTML帮助程序的更多信息,请参见将模型数据传递到局部视图的三种方法(可能还有更多)

这是查看页面

方法一在视图中填充

@{    
    PartialViewTestSOl.Models.CountryModel ctry1 = new PartialViewTestSOl.Models.CountryModel();
    ctry1.CountryName="India";
    ctry1.ID=1;    

    PartialViewTestSOl.Models.CountryModel ctry2 = new PartialViewTestSOl.Models.CountryModel();
    ctry2.CountryName="Africa";
    ctry2.ID=2;

    List<PartialViewTestSOl.Models.CountryModel> CountryList = new List<PartialViewTestSOl.Models.CountryModel>();
    CountryList.Add(ctry1);
    CountryList.Add(ctry2);    

}

@{
    Html.RenderPartial("~/Views/PartialViewTest.cshtml",CountryList );
}

我知道这个问题是针对MVC4的。但由于我们已经远远超过MVC4,如果有人在寻找ASP.NET核心,您可以使用:

<partial name="_My_Partial" model="Model.MyInfo" />


我之前真的试过了,但没有成功!我不应该重建我的解决方案。。。谢谢,它可以工作。你可以把部分查看代码以及。当使用第二种方法将值传递给partial时,我没有得到任何结果view@HeemanshuBhalla我认为var countries=ViewBag.CountryList as List可以为您提供值
@{    
    PartialViewTestSOl.Models.CountryModel ctry1 = new PartialViewTestSOl.Models.CountryModel();
    ctry1.CountryName="India";
    ctry1.ID=1;    

    PartialViewTestSOl.Models.CountryModel ctry2 = new PartialViewTestSOl.Models.CountryModel();
    ctry2.CountryName="Africa";
    ctry2.ID=2;

    List<PartialViewTestSOl.Models.CountryModel> CountryList = new List<PartialViewTestSOl.Models.CountryModel>();
    CountryList.Add(ctry1);
    CountryList.Add(ctry2);    

}

@{
    Html.RenderPartial("~/Views/PartialViewTest.cshtml",CountryList );
}
@{
    var country = (List<PartialViewTestSOl.Models.CountryModel>)ViewBag.CountryList;
    Html.RenderPartial("~/Views/PartialViewTest.cshtml",country );
}
@{
    Html.RenderPartial("~/Views/PartialViewTest.cshtml",Model.country );
}
<partial name="_My_Partial" model="Model.MyInfo" />