Я пытаюсь использовать переменные, созданные в двух разных моделях, в одном представлении. Я использую метод View Model для этого. Однако, на мой взгляд, переменные в моделях не распознаются, и выдают ошибку;
"CategoryItemViewModel" не содержит определения для "результата" и не имеет доступного метода расширения "результат", принимающего первый аргумент тип 'CategoryItemViewModel' может быть найден (вам не хватает директивы using или ссылки на сборку? "
Ниже вы можете увидеть код, который у меня есть для двух исходных моделей;
Категория Модель:
public class Category
{
public string result { get; set; }
public char[] delimiterChar { get; set; }
public Array userData { get; set; }
}
Модель изделия:
public class Item
{
public Array userDataItems { get; set; }
}
В-третьих, я создал модель представления с намерением связать две вышеупомянутые модели в одну,
ViewModel:
public class CategoryItemViewModel
{
public Item ItemList { get; set; }
public Category CategoryList { get; set; }
}
И, наконец, у меня есть один контроллер, который отвечает за объединение необходимых моделей, а также за инициализацию и возврат их в модель представления, чтобы их можно было использовать в представлении:
public ActionResult GetCategoryItem()
{
CategoryItemViewModel CIVM = new CategoryItemViewModel();
CIVM.ItemList = GetItemModel();
CIVM.CategoryList = GetCategoryModel();
return View(CIVM);
}
public Category GetCategoryModel()
{
var dataFile = Server.MapPath("~/App_Data/Category.txt");
Category cModel = new Category()
{
result = "",
delimiterChar = new[] { ',' },
userData = System.IO.File.ReadAllLines(dataFile) //Category Text File
};
return cModel;
}
public Item GetItemModel()
{
var dataFileItems = Server.MapPath("~/App_Data/Category.txt");
Item iModel = new Item()
{
userDataItems = System.IO.File.ReadAllLines(dataFileItems) //Items Text File
};
return iModel;
}
Обратите внимание, что я использую пространства имен для моего контроллера следующим образом:
Пространства имен контроллера:
using System.Web.Mvc;
using u18043039_HW3.ViewModel;
using u18043039_HW3.Models;
Просмотр пространств имен:
@using u18043039_HW3.Models
@using u18043039_HW3.Controllers
@model u18043039_HW3.ViewModel.CategoryItemViewModel
Наконец, мой взгляд:
@Model.result
@if (Model.result == "")
{
int count = 0;
foreach (String dataLine in Model.userData)
{
string countString = count.ToString();
string target = "dataLine" + countString;
string trigger = "#" + target;
<p>
<a data-toggle="collapse" href="@trigger" role="button" aria-expanded="false" aria-controls="collapseExample">
@dataLine.Split(Model.delimiterChar)[0]
</a>
<button class="btn" onclick="location.href='@Url.Action("Items", "Items")'" id="@dataLine.Split(Model.delimiterChar)[1]"><i class="fas fa-plus secondaryPlusIcon" id="@dataLine.Split(Model.delimiterChar)[1]"></i></button>
<button class="btn" id="@dataLine.Split(Model.delimiterChar)[1]"><i class="far fa-edit secondaryEditIcon" id="@dataLine.Split(Model.delimiterChar)[1]"></i></button>
<button class="btn" id="@dataLine.Split(Model.delimiterChar)[1]"><i class="far fa-trash-alt secondaryDeleteIcon" id="@dataLine.Split(Model.delimiterChar)[1]"></i></button>
</p>
<div class="collapse" id="@target">
<div class="card card-body w-25 p-3 collapsible" id="@dataLine.Split(Model.delimiterChar)[1]">
<!-- Card Elements here -->
</div>
</div>
count++;
}
}