У меня есть страница ASP.NET MVC, которая покинула Навигацию по меню, которая создается динамически с использованием JQuery TreeView Control.
В этом древовидном представлении есть список ProductNames в качестве ParentУзел (например: 10 товаров).Каждый из этих продуктов имеет ChildNode как DocTypeName (Например: 3 DocTypeNames).
Здесь Когда пользователь нажимает на ParentNode, он раскрывается и отображает DocTypeNames.Когда пользователь нажимает на DocTypeName, он загружает частичное представление, вызывая контроллер ActionResult DocumentDetails через Ajaxy.
Из приведенного ниже кода я могу прочитать выбранное DocTypeName.Но я не могу прочитать ProductName.Там написано «Не определено».
Кто-нибудь знает, как передать родительское ProductName в контроллер?
NavigationProducts.ascx Страница:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MedInfoDS.Controllers.ProductViewModel>" %>
<script type="text/javascript">
$(document).ready(function () {
$(".docId").click(function () {
alert("DocTypeName: " + this.id);
alert("ProductName: " + this.ProductName); //Error throwing here "Undefined"
$("#docDetails").load('<%= Url.Action("DocumentDetails") %>', { ProductName: "darbepoetin alfa", DocTypeName: this.id }, function (responseText, status) {
});
return false;
});
});
<div id="treecontrol">
<a title="Collapse the entire tree below" href="#">Collapse All</a> | <a title="Expand the entire tree below"
href="#">Expand All</a> | <a title="Toggle the tree below, opening closed branches, closing open branches"
href="#">Toggle All</a>
<div id="divByProduct">
<ul id="red" class="treeview-red">
<% foreach (var item in Model.Products)
{ %>
<li><span>
<%=item.Name%></span>
<ul>
<%foreach (var item1 in Model.DocTypes) { %>
<li><span>
<%= Html.ActionLink(item1.DocTypeName, "Products", new { ProductName = item.Name, DocTypeName = item1.DocTypeName })%>
<br />
<a class="docId" href="#" id="<%=item1.DocTypeName%>"><%= item1.DocTypeName%></a>
<%= Html.Hidden("ProductName", item.Name)%>
</span></li>
<% } %>
</ul>
</li>
<% } %>
</ul>
Метод контроллера:
// Response to AJAXy call to populate details for given ProductName and DocType
[HttpPost]
public virtual ActionResult DocumentDetails(string ProductName, string DocTypeName)
{
var entities = new MIDSContainer();
if (ProductName == null) return View();
int ProductId = (entities.Products.FirstOrDefault(p => p.Name == ProductName)).ProductId;
int DocTypeId = (entities.DocTypes.FirstOrDefault(d => d.DocTypeName == DocTypeName)).DocTypeId;
var documents = (from d in entities.Documents.Where(p => p.ProductId == ProductId && p.DocTypeId == DocTypeId && p.AvailableForUse == true && p.Status == "Approved") orderby (d.Description) select d).ToList();
return View(documents);
}