두 개의 모델 (Ninja & Dojo)이 있습니다.ViewBag 디스플레이 클래스 '속성을 만들려면 어떻게해야합니까?
일대 다 관계 (닌자는 하나의 도장에 속하며 Dojo에는 많은 닌자가있을 수 있음)입니다.
Dapper를 사용하고 있습니다.
Ninja.cs
using System.ComponentModel.DataAnnotations;
using dojoleague.Models;
using System;
namespace dojoleague.Models {
public class Ninja : BaseEntity{
[Key]
public long Id {get; set;}
[Required(ErrorMessage="You need a name!")]
public string Name {get; set;}
[Range(1,11, ErrorMessage="Must be between 1 and 10")]
public int Level {get; set;}
[Required]
public Dojo Dojo {get; set;}
public string Description {get; set;}
}
}
Ninjafactory :
public IEnumerable<Ninja> FindAll()
{
using (IDbConnection dbConnection = Connection)
{
dbConnection.Open();
return dbConnection.Query<Ninja>("SELECT * FROM ninjas");
}
}
Dojo.cs 내 컨트롤러에서
using System.ComponentModel.DataAnnotations;
using System;
using System.Collections.Generic;
namespace dojoleague.Models {
public class Dojo : BaseEntity{
[Key]
public long Id {get; set;}
[Required]
public string Name {get; set;}
[Required(ErrorMessage="We have to know where it is")]
public string Location {get; set;}
[Required(ErrorMessage="Provide additional info on the Dojo")]
public string Description {get; set;}
public ICollection<Ninja> Ninjas { get; set; }
}
}
,
내가 가진 :
ninjaFactory.Add(newNinja, dojo);
System.Console.WriteLine(newNinja.Dojo.Name);
ViewBag.Ninja = ninjaFactory.FindAll();
return View();
이제 System.Console.WriteLine (newNinja.Dojo.Name)은 콘솔에서 Dojo의 이름을 올바르게 인쇄합니다.
그러나 웹 브라우저에는 Dojo의 이름이 표시되지 않습니다. 내 cshtml에서
,@{
foreach(var ninja in ViewBag.Ninja){
<h2>@ninja.Name</h2>
<h4>@ninja.Dojo.Name</h4>
}
}
그것은 @ ninja.Name를 인쇄 않지만이
RuntimeBinderException 말 @ ninja.Dojo.Name을 인쇄하지 않습니다 널에 런타임 바인딩을 수행 할 수 없습니다 참조
ViewBag를 사용하여 Ninja 클래스 show에 속한 Dojo 클래스의 속성을 어떻게 만들 수 있습니까 ??
미리 감사드립니다.
당신이 당신의'ninjaFactory.FindAll() '방법을 쓸 수 :
아니면 뷰 모델 클래스의 일환으로
? – Kahbazi공개 IEnumerable FindAll() { using (IDbConnection dbConnection = Connection) { dbConnection.Open(); return dbConnection.Query ("SELECT * FROM ninjas"); } } –
Jung
이것은 MVC 또는 뷰백과는 아무 관련이 없습니다. 오류 메시지는 무엇이 잘못되었는지 설명합니다. 'Dojo' 속성은 적어도 null *입니다. * 표시 할 Dojo가 있습니까? 데이터는 어떻게 생겼습니까? –