我正在使用ExpertPDF的Html-to-PDF转换实用程序来解决这个问题(尽管如果有足够的文档,我会对其他库开放).
简而言之,我有一个以特定方式格式化的视图,我想将其呈现为用户可以保存到磁盘的PDF文档.
我到目前为止是一个PrintService(它实现了一个IPrintService接口),这个实现有两个PrintToPDF()重载,一个只接受一个URL,另一个接受一个HTML字符串,两者都返回一个byte [].我只计算了需要HTML字符串的第二个重载的细节.
我想从我的控制器做的事情是这样的:
public FileStreamResult Print(int id)
{
var model = _CustomRepository.Get(id);
string renderedView = SomethingThatRendersMyViewAsAString(model);
Stream byteStream = _PrintService.PrintToPdf(renderedView);
HttpContext.Response.AddHeader("content-disposition",
"attachment; filename=report.pdf");
return new FileStreamResult(byteStream, "application/pdf");
}
Run Code Online (Sandbox Code Playgroud)
这在理论上会将PDF呈现给页面.这是我正在寻求帮助的"SomethingThatRendersMyViewAsAString".有没有快速的方法来获取视图的字符串表示?或许我应该坚持使用URL重载并将URL传递给视图......还有其他想法吗?
谢谢!
我有一个像这样的简单模型:
class Artist(models.Model):
surname = models.CharField(max_length=200)
name = models.CharField(max_length=200, blank=True)
slug = models.SlugField(unique=True)
photo = models.ImageField(upload_to='artists', blank=True)
bio = models.TextField(blank=True)
class Images(models.Model):
title = models.CharField(max_length=200)
artist = models.ManyToManyField(Artist)
img = models.ImageField(upload_to='images')
Run Code Online (Sandbox Code Playgroud)
好吧,我开始插入一些艺术家,然后我去了图像插入表格.我发现多对多艺术家的盒子是未分类的:
代替:
我该如何解决这个问题?有什么建议吗?先感谢您.
马特奥
几个星期前我已经启动了一个WinForms项目,因为我真的不知道我想要什么功能,所以我一路上就添加了它们.这现在造成了一个可怕的混乱,我的MainForm是一个很大的泥球,例如一些重要的状态变化是由UI元素触发到我必须调用控件的OnChange事件,以便更改数据库中的某些状态.
简而言之:我刚刚开始了一个新项目,我想采取更好的方法.我只是不知道哪个是"好"的.在ASP.net MVC中,我发现MVVM模式非常有用,但在桌面上,MVVM似乎只适用于WPF,而不适用于WinForms.
另一种方法是三层体系结构:我的数据库类目前直接与UI进行对话.我现在创建一个新的静态类("ApplicationState"),它与数据库进行通信并触发事件以告诉用户界面"嘿,某事发生了变化!".UI将操纵State,然后将处理数据库持久性,并在UI需要更新时再次引发事件.这里的要点是ApplicationState类永远不会直接修改UI,但是UI订阅了Events.这看起来像干净/"MVC-y"的方式,但也许我在这里忽略了什么?
基本上我的最终目标是让UI完全独立于数据库层,以确保我不再将业务逻辑连接到UI.
我最近创建了我的简单log4net数据库表,用于通过adonet appender进行日志记录..它的工作原理!
但后来我注意到另一个使用其他字段的网站!看!
哇!我很想知道在哪里可以获得可用字段名称的列表,例如Method_name真的让我思考!
但是日志通常支持添加到这个字段或者我需要一个包装器或什么?我通过log4net配置看到它的method_name指向数据库字段并具有此功能
"<conversionPattern value="%property{method_name}"/>"
Run Code Online (Sandbox Code Playgroud)
这很棒但是我怎么在调用记录器之前填充它?
我使用标准的线程,记录器,消息和异常FIELD NAMES ....
任何人在我可以登录什么esle建议或经验......我会非常高兴能到登录方法的名称,我使用的GetType从该"记录器"字段,它让我命名空间和类...
有没有更好的方法来编写此代码..
MyObject pymt = new MyObject();
pymt.xcol1id= Convert.IsDBNull(row["col1id"]) ? 0 : (int)row["col1id"];
pymt.xcold2id= Convert.IsDBNull(row["col2id"]) ? String.Empty : (string)row["col2id"];
pymt.xcold3id = Convert.IsDBNull(row["CustNum"]) ? 0 : (decimal)row["xcold3id"];
Run Code Online (Sandbox Code Playgroud)
这可以用一种更干净的方式来完成..就像通用方法一样?
以下是我使用的代码:
byte[] bkey = key.getEncoded();
String query = "INSERT INTO keytable (name, key) VALUES (?,?)";
PreparedStatement pstmt = (PreparedStatement) connection.prepareStatement(query);
pstmt.setString(1, "test");
pstmt.setBytes(2, bkey);
pstmt.execute();
Run Code Online (Sandbox Code Playgroud)
以下是我得到的错误:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key) VALUES ('test',_binary'????s??u\'?}p?u')' at line 1
Run Code Online (Sandbox Code Playgroud)
我有MySQL 5.0.41和mysql-connector-java-5.1.7-bin.jarJDBC库.有人可以帮帮我吗?提前致谢!
我的问题有些奇怪,但我可以为任何DOM元素(div)添加事件,比如'onHtmlChange',当div改变了内容时会收到通知吗?
我试图从文件中读取无符号整数(存储为连续字节)并将它们转换为整数.我试过这个:
file = File.new(filename,"r")
num = file.read(2).unpack("S") #read an unsigned short
puts num #value will be less than expected
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
刚才我需要做类似以下查询的事情,并且惊讶于它实际上是有意图的.但是我找不到任何关于它的文件,所以我有点担心这个未知的副作用.这是我写的:
select * from Table1 where (col1, col2) in (select col3, col4 from Table2)
Run Code Online (Sandbox Code Playgroud)
这似乎是将一对列与列对列表进行匹配.这是它应该如何工作,还是我可以期待一些令人讨厌的惊喜?
c# ×4
.net ×2
mysql ×2
pdf ×2
winforms ×2
ado.net ×1
architecture ×1
asp.net-mvc ×1
django ×1
django-admin ×1
dom ×1
events ×1
file ×1
java ×1
javascript ×1
jdbc ×1
log4net ×1
many-to-many ×1
python ×1
ruby ×1
sorting ×1
syntax ×1
unsigned ×1
vb.net ×1