我想知道如何解决这个问题。我正在开发一个ASP.NET MVC应用程序
我有 models
public class SearcherString
{
public int ID { get; set; }
public string Description { get; set; }
public virtual ICollection<Path> Path { get; set;
public SearcherString()
{
Path = new List<Path>();
}
}
public class Path
{
public int ID { get; set; }
public int CategoryID { get; set; }
public string CategoryName { get; set; }
}
我在 Controller
中传递它(我正在将我的模型写入我的数据库,然后我正在检索它)
public ActionResult Index()
{
return View(db.SearchersString.ToList()
}
我有一个 View
:
@model IEnumerable<App.Models.SearcherString>
问题出在我的视图中,我无法显示路径模型中的名称 ( CategoryID , CategoryName )
我试着这样做:
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Description)
</th>
@foreach (var item in Model)
{
foreach (var path in item.Path)
{
<th>
@Html.DisplayName(path.CategoryID.ToString())
</th>
<th>
@Html.DisplayName(path.CategoryName)
</th>
}
}
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
@foreach (var path in item.Path)
{
<td>
@Html.DisplayFor(modelItem => path.CategoryID)
</td>
<td>
@Html.DisplayFor(modelItem => path.CategoryName)
</td>
}
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
@Html.ActionLink("Details", "Details", new { id = item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ID })
</td>
</tr>
}
</table>
有人可以帮我解决这个问题吗?
编辑:
有没有办法在这里将Html.DisplayName
更改为Html.DisplayNameFor
?
@Html.DisplayName(path.CategoryID.ToString())
答案 0 :(得分:1)
您应该在查询中包含导航属性:
public ActionResult Index()
{
return View(db.SearchersString.Include(c=>c.Path).ToList()
}
答案 1 :(得分:1)
您的模型不正确。
public int PathID {get; set;}
public virtual Path Path{get; set;}
这不是财产。这被视为一种方法,一种特殊的方法。它是一个构造函数。创建一个EMPTY的Path对象。
如果你想拥有一对多的关系。您必须使用该属性并添加ID属性。
public ActionResult Index(){
return View(db.SearchersString.Include(c=>c.Path).ToList();
}
现在你有一个延迟加载属性,它会自动将Path类的ID属性保存到SearchString模型属性PathID中。
要获取PathID,如果您正在使用EntityFramework,则需要调用include函数,这很可能就是这种情况。
module.exports = {
types: {
uniqueEmail:function(value) {
return uniqueEmail;
},
password: function(password) {
return password === this.passwordConfirmation;
}
},
schema:true,
attributes: {
firstname: {
alpha:true,
required: true
},
lastname:{
alpha:true,
required: true
},
username:{
type:'string',
unique: true,
required:true
},
password:{
type:'string',
required:true,
password:true
},
age:{
numeric:true,
required: true
},
gender:{
alpha:true,
required: true
},
email:{
type:'email',
required: true,
unique:true,
uniqueEmail:true
},
passwordConfirmation: {
type: 'string'
},
department:{
model: 'Department',
required: true
},
qualifications:{
collection: 'Qualification',
via: 'person'
},
loggedIn: {
type: 'boolean',
defaultsTo: 0,
required: true
}