Я не знаю, как лучше всего описать мое требование, но вот. Я пытаюсь отобразить представление из следующего контроллера/модели в приложении nopCommerce:
Фрагмент CustomerController.cs:
[NonAction]
protected CustomerNavigationModel GetCustomerNavigationModel(Customer customer)
{
var model = new CustomerNavigationModel();
model.HideAvatar = !_customerSettings.AllowCustomersToUploadAvatars;
model.HideRewardPoints = !_rewardPointsSettings.Enabled;
model.HideForumSubscriptions = !_forumSettings.ForumsEnabled || !_forumSettings.AllowCustomersToManageSubscriptions;
model.HideReturnRequests = !_orderSettings.ReturnRequestsEnabled || _orderService.SearchReturnRequests(customer.Id, 0, null).Count == 0;
model.HideDownloadableProducts = _customerSettings.HideDownloadableProductsTab;
model.HideBackInStockSubscriptions = _customerSettings.HideBackInStockSubscriptionsTab;
return model;
}
CustomerNavigationModel.cs:
public partial class CustomerNavigationModel : BaseNopModel
{
public bool HideInfo { get; set; }
public bool HideAddresses { get; set; }
public bool HideOrders { get; set; }
public bool HideBackInStockSubscriptions { get; set; }
public bool HideReturnRequests { get; set; }
public bool HideDownloadableProducts { get; set; }
public bool HideRewardPoints { get; set; }
public bool HideChangePassword { get; set; }
public bool HideAvatar { get; set; }
public bool HideForumSubscriptions { get; set; }
public CustomerNavigationEnum SelectedTab { get; set; }
}
public enum CustomerNavigationEnum
{
Info,
Addresses,
Orders,
BackInStockSubscriptions,
ReturnRequests,
DownloadableProducts,
RewardPoints,
ChangePassword,
Avatar,
ForumSubscriptions
}
Фрагмент MyAccountNavigation.cshtml:
@model CustomerNavigationModel
@using Nop.Web.Models.Customer;
@if (!Model.HideInfo)
{
<li><a href="@Url.RouteUrl("CustomerInfo")" class="@if (Model.SelectedTab == CustomerNavigationEnum.Info)
{<text>active</text>}
else
{<text>inactive</text>}">@T("Account.CustomerInfo")</a></li>}
Представления: @Html.Partial("MyAccountNavigation", Model.NavigationModel, новый ViewDataDictionary())
Я знаю, что он не может отобразить MyAccountNavigation, потому что он не существует в контроллере. Однако в зависимости от того, на какой странице размещен синтаксис, он работает. Так есть ли способ добиться этого без изменения кода в контроллере? Заранее спасибо.