나는 모델을 가지고 :MVC의 뷰 모델 및 탐색 특성
public partial class VisitorLog
{
public int Id { get; set; }
public string VisitorName { get; set; }
public DateTime TimeIn { get; set; }
public DateTime TimeOut { get; set; }
public string CompanyName { get; set; }
public string EmployeeID { get; set; }
public string VisitReason { get; set; }
// Navigation properties
[ForeignKey("EmployeeID")]
public virtual Employee Employee { get; set; }
}
일반적인 저장소 :
public class GenericRepository<C, T> : IGenericRepository<T> where T : class where C : DbContext, new()
{
private C _entities = new C();
public C Context
{
get { return _entities; }
set { _entities = value; }
}
public virtual IQueryable<T> GetAll()
{
IQueryable<T> query = _entities.Set<T>();
return query;
}
public IQueryable<T> FindBy(System.Linq.Expressions.Expression<Func<T, bool>> predicate)
{
IQueryable<T> query = _entities.Set<T>().Where(predicate);
return query;
}
public virtual void Add(T entity)
{
_entities.Set<T>().Add(entity);
}
public virtual void Delete(T entity)
{
_entities.Entry(entity).State = System.Data.EntityState.Deleted;
}
public virtual void Edit(T entity)
{
_entities.Entry(entity).State = System.Data.EntityState.Modified;
}
public virtual void Save()
{
_entities.SaveChanges();
}
}
일반 저장소에 대한 인터페이스 :
public interface IGenericRepository<T> where T : class
{
IQueryable<T> GetAll();
IQueryable<T> FindBy(Expression<Func<T, bool>> predicate);
void Add(T entity);
void Delete(T entity);
void Edit(T entity);
void Save();
}
내 모델 별 저장소 (일반을 상속 함) :
뷰에 뷰 모델을로드내 컨트롤러 :
var searchViewModel = new SearchViewModel
{
VisitorLogs = iVisitorlogRepository.FindBy(v => v.VisitorName.Contains(searchText)
|| v.CompanyName.Contains(searchText)
|| v.EmployeeID.Contains(searchText)),
};
그리고 마지막으로 내보기 :
@model VisitorLogApp.ViewModels.SearchViewModel
@foreach (var item in ViewData.Model.VisitorLogs) {
<tr>
<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>
<td>
@item.VisitorName
</td>
<td>
@item.CompanyName
</td>
<td>
@item.Employees.EmployeeName
</td>
<td>
@String.Format("{0:g}", item.TimeIn)
</td>
<td>
@String.Format("{0:g}", item.TimeOut)
</td>
<td>
@item.VisitReason
</td>
</tr>
모든 일 명을 제외하고 큰 노력하고 있습니다. 보기에는 방문자 목록 (VisitorLog)이 표시됩니다. 탐색 속성을 사용하여 간단히 @ item.Employees.EmployeeName을 사용하여 VisitorLog 클래스의 직원 ID 대신 EmployeeName 값을 표시 할 수있었습니다. "에 대한리스트 가입자에 옵션으로 표시되지
VisitorLogs = iVisitorlogRepository.FindBy(v => v.VisitorName.Contains(searchText)
|| v.CompanyName.Contains(searchText)
|| v.Employees.EmployeeName.Contains(searchText)),
하지만 Employees.EmployeeName 위의 예 : 그러나 나는 또한 컨트롤러 내 저장소 호출에 직원 이름으로 검색 할 수 있도록하려면 V".
도움을 주시면 감사하겠습니다.
DOH !!! 그랬어! 감사! – steveareeno