gpt4 book ai didi

c# - 如何在一个 View 中使用两个模型?

转载 作者:行者123 更新时间:2023-12-04 00:57:13 24 4
gpt4 key购买 nike

我试图在一个 View 中使用在两个不同模型中创建的变量。我正在使用 View Model 方法来这样做。然而在我看来,模型中的变量无法识别,并抛出错误;

“‘CategoryItemViewModel’不包含‘result’的定义,并且找不到接受‘CategoryItemViewModel’类型的第一个参数的可访问扩展方法‘result’(您是否缺少 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; }
}

第三,我创建了一个 View 模型,目的是将上述两个模型链接成一个,

View 模型:

public class CategoryItemViewModel
{
public Item ItemList { get; set; }
public Category CategoryList { get; set; }
}

最后我有一个 Controller 负责组合必要的模型以及初始化并将它们返回到 View 模型,以便它们可以在 View 中使用:

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;
}

请注意,我正在为我的 Controller 和 View 使用如下命名空间:

Controller 命名空间:

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++;
}
}

最佳答案

在你的View中,Model代表CategoryItemViewModel,为了得到结果,你需要先访问CategoryList。

所以你应该做 @Model.CategoryList.result

关于c# - 如何在一个 View 中使用两个模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61389159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com