在将数据传输到服务器时,我使用标准组件输入/输出日期<input type="date" ng-model-options="{timezone:'UTC'}" ng-model="vm.employe.dob>
发送正确的日期,因为我设置了时区,但是当从服务器接收数据(日期)时,显示的日期少了一天(数据到达07/16/2019(在函数中),显示07/15/2019),如果设置timezone:timezoneOffset,则服务器端的数据正常显示,但少了一天再次保存到服务器端。恶性循环。如何解决这样的问题?
主页
/
user-296647
Юрик Тао's questions
我正在使用通用接口
public interface IRepository<T> where T :class
{
List<T> GetAllRecords();
}
我还实现了一个通用存储库
public class BaseRepository<T> : IRepository<T> where T : class
{
protected readonly DataContext context;
public BaseRepository(DataContext data)
{
context = data;
}
public List<T> GetAllRecords()
{
return context.Set<T>().AsNoTracking().ToList();
}
}
DataContext - 数据库上下文。
创建了一个将扩展基本接口的接口
public interface IUserRepository : IRepository<User>
{
void MyMethod();
}
public class UserRepository : BaseRepository<User>, IUserRepository
{
protected readonly DataContext context;
protected readonly IUserRepository repository;
public UserRepository(DataContext data, IUserRepository user):base (data)
{
context = data;
repository = user;
}
public void MyMethod()
{
throw new NotImplementedException();
}
Autofac 配置文件
public class AutofacRegister
{
public static void ConfigureContainer()
{
// получаем экземпляр контейнера
var builder = new ContainerBuilder();
var config = GlobalConfiguration.Configuration;
// Register your Web API controllers.
// builder.RegisterType<DataContext>();
builder.RegisterType<UserRepository>().As<IUserRepository>().InstancePerRequest();
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
// Set the dependency resolver to be Autofac.
var container = builder.Build();
var resolver = new AutofacWebApiDependencyResolver(container);
// Configure Web API with the dependency resolver.
GlobalConfiguration.Configuration.DependencyResolver = resolver;
}
}
向 GlobalAsax 添加了一行代码
AutofacRegister.ConfigureContainer();
在控制器中。
public class UserController : ApiController
{
IUserRepository repository;
public UserController(IUserRepository user)
{
repository = user;
}
public List<User> GetRecords()
{
return repository.GetAllRecords();
}
}
错误是什么,我理解依赖注入,但我做不到。使用通用存储库时我做错了什么?
有两种型号:
public class Course
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CourseId { get; set; }
[Required(ErrorMessage = "Обязательно для заполнения")]
[Display(Name = "Название курса")]
public string Title { get; set; }
[Required(ErrorMessage = "Обязательно для заполнения")]
[Display(Name = "Описание курса")]
public string Description { get; set; }
[Required(ErrorMessage = "Обязательно для заполнения")]
[Display(Name = "Стоимость курса")]
public decimal Price { get; set; }
//Configure 1 to many and NavigationProperty
//foreighn key
public int? CurrentTeacherId { get; set; }
public Teacher Teacher { get; set; }
}
public class Teacher
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TeacherId { get; set; }
[Required(ErrorMessage = "Обязательно для заполнения")]
[Display(Name = "Имя")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Обязательно для заполнения")]
[Display(Name = "Отчество")]
public string MiddleName { get; set; }
[Required(ErrorMessage = "Обязательно для заполнения")]
[Display(Name = "Фамилия")]
public string LastName { get; set; }
[Required(ErrorMessage = "Обязательно для заполнения")]
[Display(Name = "Опыт")]
public int Expirience { get; set; }
public List<Course> Courses { get; set; }
}
我已经实现了一个通用接口
public interface IRepository<T> where T:class
{
void Add(T item);
void Update(int id, T Item);
List<T> GetAllRecords();
T GetById(int id);
}
被覆盖的方法
public class BaseRepository<TEntity> : IRepository<TEntity> where TEntity : class
{
protected DataContext Context;
public BaseRepository(DataContext dataContext)
{
Context = dataContext;
}
public void Add(TEntity item)
{
Context.Set<TEntity>().Add(item);
Context.SaveChanges();
}
public List<TEntity> GetAllRecords()
{
return Context.Set<TEntity>().ToList();
}
public TEntity GetById(int id)
{
return Context.Set<TEntity>().Find(id);
}
public void Update(TEntity Item)
{
Context.Entry(Item).State = EntityState.Modified;
Context.SaveChanges();
}
}
我创建了另一个类,在其中添加了 2 个接口(即ICourseRepository
,ITeacherRepository
我们使用其中的方法扩展我们的接口)。因此,类CourseRepository
public interface ICourseRepository : IRepository<Course>
{
//List<Course> GetCoursesByTeacherId(int teacherid);
}
public interface ITeacherRepository : IRepository<Teacher>
{
}
public class CourseRepository : BaseRepository<Course>, ICourseRepository
{
private readonly DataContext _dataContext;
private ICourseRepository _courseRepository;
//private readonly ITeacherREpository _teacherREpository;
//ITeacherREpository teacherREpository
public CourseRepository(DataContext dataContext, CourseRepository courseRepository) : base(dataContext)
{
_dataContext = dataContext;
_courseRepository = courseRepository;
//_teacherREpository = teacherREpository;
}
//public List<Course> GetCoursesByTeacherId(int teacherid)
//{
// Teacher teacher = _teacherREpository.Find(p => p.TeacherId == teacherid);
// if (teacher != null)
// {
// List<Course> asd = _dataContext.Courses.Where(p => p.Teacher.TeacherId == teacher.TeacherId).AsNoTracking().ToList();
// }
// throw new NotImplementedException();
//}
}
我现在如何使用控制器中方法的所有功能,并使用 Ninject。这就是我卡住的地方。我在控制器中写了以下内容。编码。
IRepository<Course> repository;
public HomeController(IRepository<Course> _repository)
{
repository = _repository;
IKernel kernel = new StandardKernel();
kernel.Bind<ICourseRepository>().To<CourseRepository>();
repository = kernel.Get<ICourseRepository>();
}
但它给出了一个错误。
有一个 PDF 文件,您需要编写一个代码来打印这个文件,并在一张纸上拆分几页(例如,4.8 x 1),我使用库 Spire.PDF、Spire.Document(来源:https:// www.e-iceblue.com/Introduce/pdf-for-net-introduce.html#.W5d0JvYnZPY)和 ZetPdf(来源:https ://zetpdf.com/ )。如果您通过 Spire.Pdf 组件工作,那么我使用这种方法(代码取自文档)
internal static void splitPdfFileByBookmarks()
{
using (PdfDocument pdf = new PdfDocument(PdfConformanceLevel.Pdf_A1A))
{
pdf.LoadFromFile(@"d:\PdfFiles\10_11_1808_p.pdf");
pdf.FileInfo.Version = PdfVersion.Version1_7;
PdfPageBase pageBase = pdf.Pages.Add(PdfPageSize.A4, new PdfMargins());
这里我们一页放4页。我保存文档,也保存不拆分
pdf.PrintSettings.SelectMultiPageLayout(1,4);
pdf.SaveToFile(@"d:\PdfFiles\file.pdf",FileFormat.PDF);
}
}
如果您使用 ZetPdf 组件,则只有 2 页的拆分。1,但没有更多。
string filename = "Portable Document Format.pdf";
File.Copy(Path.Combine("../../../../../PDFs/", filename),
Path.Combine(Directory.GetCurrentDirectory(), filename), true);
// Create the output document
PdfDocument outputDocument = new PdfDocument();
// Show single pages
// (Note: one page contains two pages from the source document)
outputDocument.PageLayout = PdfPageLayout.SinglePage;
XFont font = new XFont("Verdana", 8, XFontStyle.Bold);
XStringFormat format = new XStringFormat();
format.Alignment = XStringAlignment.Center;
format.LineAlignment = XLineAlignment.Far;
XGraphics gfx;
XRect box;
// Open the external document as XPdfForm object
XPdfForm form = XPdfForm.FromFile(filename);
for (int idx = 0; idx < form.PageCount; idx += 2)
{
// Add a new page to the output document
在这部分代码中添加了一个页面,我尝试创建 page_2 并添加页面错误“无法将页面添加到此文档,因为该文档已拥有此页面。”
PdfPage page = outputDocument.AddPage();
page.Orientation = PageOrientation.Landscape;
double width = page.Width;
double height = page.Height;
int rotate = page.Elements.GetInteger("/Rotate");
gfx = XGraphics.FromPdfPage(page);
// Set page number (which is one-based)
form.PageNumber = idx + 1;
box = new XRect(0, 0, width/4, height/2);
// Draw the page identified by the page number like an image
gfx.DrawImage(form, box);
// Write document file name and page number on each page
box.Inflate(0, -10);
gfx.DrawString(String.Format("- {1} -", filename, idx + 1),
font, XBrushes.Red, box, format);
if (idx + 1 < form.PageCount)
{
// Set page number (which is one-based)
form.PageNumber = idx + 2;
box = new XRect(width / 4, 0, width/4 , height/2);
// Draw the page identified by the page number like an image
gfx.DrawImage(form, box);
// Write document file name and page number on each page
box.Inflate(0, -10);
gfx.DrawString(String.Format("- {1} -", filename, idx + 2),
font, XBrushes.Red, box, format);
}
}
// Save the document...
filename = "TwoPagesOnOne_tempfile.pdf";
outputDocument.Save(filename);
// ...and start a viewer.
Process.Start(filename);
有没有人遇到过这样的问题?现在我在挖掘其他组件,也许有人会告诉你一些解决方案。