C# 如何在MVC3中渲染局部视图
我试图在应用程序中呈现局部视图,但无法显示该值。这就是我的观点 我的主索引视图C# 如何在MVC3中渲染局部视图,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我试图在应用程序中呈现局部视图,但无法显示该值。这就是我的观点 我的主索引视图 <div id="RPPricingNameModel"> @Html.Partial("RPPricingPlanNames") </div> <script type="text/javascript"> $("#RPPricingNameModel").load("/Home/GetPlanNameModel"); </script>
<div id="RPPricingNameModel">
@Html.Partial("RPPricingPlanNames")
</div>
<script type="text/javascript">
$("#RPPricingNameModel").load("/Home/GetPlanNameModel");
</script>
@model IndexVm
@*Whatever index code you have*@
@Html.Partial("PlanPartial", Model.PlanNameModel)
下面是模型的代码
public class RPPricingPlanNameModel
{
public string Header { get; set; }
}
当我尝试用TD显示值时,它不会显示任何内容。
您能帮我解决这个问题吗?看起来您缺少了在jquery选择器中查找的选择器 您需要添加:
<div id="RPPricingNameModel"></div>
祝你好运
您的@m.Header也应该是@Model.Header
最后,加载部分视图的javascript不应位于部分视图中,而应位于要将部分视图加载到的主视图中。将索引替换为:
<div id="RPPricingNameModel"></div>
<script type="text/javascript">
$(function(){$("#RPPricingNameModel").load("/Home/GetPlanNameModel");});
</script>
没有所需的模型包装$(“#RPPricingNameModel”).load(“/Home/getplannamodel”)代码>在文档内部就绪,以便仅在加载完整的dom后执行
$(function(){
$("#RPPricingNameModel").load("/Home/GetPlanNameModel");
});
如果您只想使用PartialView,而不是专门用jquery动态加载它们,请看一下我对这个问题的回答,它可能会解决您的问题:
您只需为索引创建一个ViewModel,其中包含局部视图所需的所有对象
控制器操作方法:
public ActionResult Index()
{
PlanNameModel planNameModel = new PlanNameModel();
planNameModel.Header = "Plans";
ViewData.Model = new IndexVm{ PlanNameModel = planNameModel };
}
视图模型:
public class IndexVm
{
public PlanNameModel PlanNameModel { get; set; }
}
索引视图
<div id="RPPricingNameModel">
@Html.Partial("RPPricingPlanNames")
</div>
<script type="text/javascript">
$("#RPPricingNameModel").load("/Home/GetPlanNameModel");
</script>
@model IndexVm
@*Whatever index code you have*@
@Html.Partial("PlanPartial", Model.PlanNameModel)
局部视图
@model PlanNameModel
<table style= "vertical-align:top; left:0px; top:0px; position:absolute; border-width:1px; border-style:solid; border-color:Green; width:130px; text-align:left;">
<tr>
<td style=" font-size:15px; font-weight:bold; color:Black;">
@Model.Header
<div>
@Html.LabelFor(x => x.Header)
</div>
</td>
</tr>
<table>
@model PlanNameModel
<div>@Model.Header</div>
@model PlanNameModel
@模型头
我尝试了这个。这对我不起作用。它显示的是值“Header”,而不是我分配给Model.Header的实际值“Plans”。我也尝试过了。将Javascript移动到main Index.cshtml,并将m.Header更改为@Model.Header。现在获取空引用execption。如果在GetPlanNameModel()中放置断点,会发生什么情况?它快到了吗?是的,它快到了。我可以看到我返回的模型不是空的。请更新您的问题以反映您最新的更改,也许我们能够发现问题,因为如果您进行了这些更改,您的模型不应为空。现在我得到的结果是“”,而不是任何值。我如何删除空引用错误。还有一个建议:用Get替换load基本上就是我要做的事情,将一些文本从数据库加载到我的页面中。我在我的页面上有不同的部分,我把它们分成了不同的部分视图。现在我想用数据库中的文本加载这些标签。我正试图用这种技术来实现这一点,但它似乎不起作用。还有其他想法吗?我的答案已经包括了,这似乎不是问题。不幸的是,这看起来很简单,但不知何故,我无法让这件事起作用(我有点困惑。你能解释一下吗?嘿,我从调试中发现了这么多。这可能会触发一些问题来解决这个问题。我在.load函数中添加了一个警报。它会呈现我的部分视图,此时模型为空。因此值将为null。然后警报告诉我它正在运行java脚本并获取值通过调用controller方法。但是之后它加载页面,而不是使用新的model.values再次呈现部分视图。你知道序列吗?如果我可以在controller方法之后呈现部分视图,那么它就可以工作了。有什么想法吗???@VivekPatel我在我的回答中添加了更多解释谢谢你的想法。我在你的p以前的帖子。