小编mar*_*arq的帖子

有没有办法从非Web应用程序处理MVC视图(aspx文件)?

我有一个后台服务运行,它向我的网站用户发送电子邮件.我想将电子邮件模板编写为MVC视图,以保持一致(以便可以使用相同的模型发送电子邮件以显示网页).

不幸的是,当我尝试执行LoadControl(只是修补到BuildManager.CreateInstanceFromVirtualPath)时,我得到以下内容:

System.NullReferenceException at
  System.Web.dll!System.Web.VirtualPath.GetCacheKey() + 0x26 bytes  
  System.Web.dll!System.Web.Compilation.BuildManager.GetCacheKeyFromVirtualPath + 0x2a bytes
  System.Web.dll!System.Web.Compilation.BuildManager.GetVPathBuildResultFromCacheInternal  + 0x30 bytes
Run Code Online (Sandbox Code Playgroud)

似乎如果我将MvcBuildViews设置为true,那么应该有一些简单的方法来使用编译的视图来构建电子邮件模板,但我无法弄清楚如何.

我从Rick Strahl找到了以下博客,可能会有这样的技巧:http: //www.west-wind.com/presentations/aspnetruntime/aspnetruntime.asp

但是,它似乎启动了一个完整的ASP.NET服务器来处理请求.

有没有一种简单的方法来加载MVC视图并渲染它?或者是Rick Strahl建议的加载ASP.NET运行时的唯一方法?

c# asp.net-mvc templates

8
推荐指数
2
解决办法
3379
查看次数

.NET,C#:如何添加充当ISerializable接口的自定义序列化属性

我正在做一些db linq对象的序列化,它包含EntitySet和EntityRef类.

我找到了一种非常简单的方法来处理这些类的序列化,只需使用ISerializable来正确处理这种类型的成员(将它们转换为序列化列表,并在反序列化时撤消它).

但是,如果我能这样做,那将是非常好的:

[Serializable]
[SerializeLinqEntities]
partial class Person
{ ... }
Run Code Online (Sandbox Code Playgroud)

代替:

partial class Person : ISerializable
{
  public virtual void GetObjectData( SerializationInfo si, StreamingContext ctxt )
  {
    EntitySerializer.Serialize(this, typeof(Person), si, ctxt);
  }

  protected Person( SerializationInfo si, StreamingContext ctxt )
  {
    EntitySerializer.Deerialize(this, typeof(Person), si, ctxt);
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?我查看了序列化类,似乎无法找到任何方法来设置自定义序列化过滤器例程(我可以在其中查找我的自定义属性).

谢谢!

.net c# serialization custom-attributes

5
推荐指数
1
解决办法
7689
查看次数