我正在编辑这个问题,因为我自己发现并且意识到原始问题是不正确的。控制器看起来像这样:
public class TabController : Controller
{
/// <summary>
/// Main Action for returning the tabs
/// </summary>
/// <returns></returns>
public ActionResult BuildTabs(string jobNumber)
{
List<Tab> tabList = new List<Tab>();
int newJobNumber = Convert.ToInt32(jobNumber);
var indTabs = CompdataSurveysBusiness.DataPassThrough.GetIndustrybyJobNumber(newJobNumber);
foreach (var t in indTabs)
{
Tab tab = new Tab() { Id = t.IndustryId, Name = t.IndustryId.ToString(), Visible = true, Url = jobNumber.ToString() };
tabList.Add(tab);
}
return PartialView("_Tabs", tabList);
}
}
这是在选择jsTree节点时将数据发送到控制器操作的jQuery。
.bind("select_node.jstree", function (event, data) {
//code block for enabling accept and submit buttons once a job is selected in the treeview
$("input").removeAttr("disabled");
//conditional statement to disable the selection of parent (Job Type) Nodes
if (data.node.children.length > 0) {
$tree.jstree(true).deselect_node(data.node);
// $tree.jstree(true).toggle_node(data.node);
};
//conditional statement to disable the selected node
if (data.node.children.length <= 0) {
$tree.jstree(true).disable_node(data.node);
}
//not allow any other node to be selected
// $tree.jstree(true).deselect_all(true);
//section for passing the ID of selected node to server for processing
var id = data.node.id;
var url = '@Url.Action("BuildTabs", "Tab", new { jobNumber = "-1" })';
url = url.replace("-1", id);
$.ajax({
type: 'POST',
url: url,
dataType: 'json',
contentType: 'application/json; charset=utf-8'
});
这是部分视图的HTML。
@model List<AnalyticsTool.Models.Tab>
<div id="tabsWrapper">
<ul id="ulTab">
@foreach (var t in Model)
{
<li class="liTab"><a id="@t.Id" class="aTab" href="@t.Url">@t.Name</a></li>
}
</ul>
</div>
因此,当选择树节点时,我需要渲染制表符的局部视图。我不确定,因为我是MVC的新手,是如何在我的主视图上渲染局部视图。
答案 0 :(得分:0)
您传入_Tabs
。
@Html.Partial("_Tabs", new List<AnalyticsTool.Models.Tab>())
您应该使用Tab
列表传入模型。你应该如何设置它的方式
使用
@{Html.Action("Index", "CONTROLLER NAME");}
答案 1 :(得分:0)
似乎你试图将部分视为儿童行为。部分没有自己的背景。它们继承主视图的上下文,只能访问主视图所具有的数据。你想要的是一个儿童行动。您的索引操作基本上已经是子操作,因为您返回了部分视图。但是,您应该使用[ChildActionOnly]
进行装饰,以防止对其进行直接URL访问,因为它只返回部分视图(没有布局)。
那就是说,你需要做的就是把你的Html.Partial
电话改为:
@Html.Action("Index", "ControllerIndexIsIn")
然后,这将导致您的索引操作实际运行,并且部分视图将使用结果进行解析。
答案 2 :(得分:0)
你需要调用@ html.RenderAction(&#34; Action&#34;,&#34; Controller&#34;)这将调用控制器动作并返回结果部分视图,你调用它的方式通过在一个没有任何东西可以循环渲染
的空模型中