小编Ger*_*ard的帖子

使用MVC,C#和jQuery导出到CSV

我正在尝试将列表导出为CSV文件.我完成了所有工作,我想写入文件到响应流.这没有任何作用.

这是我的代码:

从页面调用方法.

$('#btn_export').click(function () {
         $.post('NewsLetter/Export');
});
Run Code Online (Sandbox Code Playgroud)

控制器中的代码如下:

[HttpPost]
        public void Export()
        {
            try
            {
                var filter = Session[FilterSessionKey] != null ? Session[FilterSessionKey] as SubscriberFilter : new SubscriberFilter();

                var predicate = _subscriberService.BuildPredicate(filter);
                var compiledPredicate = predicate.Compile();
                var filterRecords = _subscriberService.GetSubscribersInGroup().Where(x => !x.IsDeleted).AsEnumerable().Where(compiledPredicate).GroupBy(s => s.Subscriber.EmailAddress).OrderBy(x => x.Key);

                ExportAsCSV(filterRecords);
            }
            catch (Exception exception)
            {
                Logger.WriteLog(LogLevel.Error, exception);
            }
        }

        private void ExportAsCSV(IEnumerable<IGrouping<String, SubscriberInGroup>> filterRecords)
        {
            var sw = new StringWriter();
            //write the header
            sw.WriteLine(String.Format("{0},{1},{2},{3}", CMSMessages.EmailAddress, CMSMessages.Gender, CMSMessages.FirstName, CMSMessages.LastName));

            //write every subscriber to …
Run Code Online (Sandbox Code Playgroud)

c# csv asp.net-mvc jquery

81
推荐指数
4
解决办法
10万
查看次数

列表 - 取消订阅电子邮件标题.如何?

我正在尝试将List-Unsubscribe标头添加到正在发送的电子邮件中.到目前为止,我没有运气这么做.

到目前为止我得到了什么:

var mailMessage = new MailMessage
                    {
                        Subject = newsletter.Subject,
                        Body = newsLetterHTML,
                        IsBodyHtml = true,
                        Sender = new MailAddress(senderAddress)
                    };
                    mailMessage.To.Add(subscriber.Email);
                    mailMessage.ReplyToList.Add(senderAddress);
                    mailMessage.Headers.Add("List-Unsubscribe", unSubscribeUrl);
Run Code Online (Sandbox Code Playgroud)

unSubscribeUrl是一样的东西"www.example.com/unlist?id=8822772727".当我发送电子邮件时,一切正常,除了list-unsubscribe选项.哪个没有在任何邮件客户端中显示.

欢迎任何帮助!

更新
这是我用来发送电子邮件的完整代码:

var mailMessage = new MailMessage
                    {
                        Subject = newsLetter.Subject,
                        Body = newsLetterHTML,
                        IsBodyHtml = true,
                        Sender = new MailAddress(senderAddress)
                    };
                    mailMessage.To.Add(subscriber.Email);
                    mailMessage.ReplyToList.Add(senderAddress);
                    mailMessage.Headers.Add("List-Unsubscribe", String.Format("<{0}>", "http://www.foo.com/unlist?id=8888"));
                    mailMessage.HeadersEncoding = Encoding.Default;

                    var smtpClient = new SmtpClient();
                    smtpClient.Send(mailMessage);
Run Code Online (Sandbox Code Playgroud)

更新2
经过一番研究后,我将标题放入mailMessage中.当我发送电子邮件时,我可以看到以下标题:

List-Unsubscribe: <http://demo.localhost/home/hobbymap-gerard/afmelden-voor-nieuwsbrief?id=c786aeb0-554d-4670-94d8-82d6f25a050b>
MIME-Version: 1.0
From: info@test.nl
To: test@gmail.com
Reply-To: info@test.nl
Date: 8 …
Run Code Online (Sandbox Code Playgroud)

c# asp.net email email-headers

15
推荐指数
3
解决办法
2万
查看次数

将xml值映射到枚举类型

我需要解析从第三方到C#对象的XML文件.我收到的一些XML具有枚举值,我想将其存储在枚举类型中.

例如,我有以下xml文件的xsd:

<xsd:simpleType name="brandstof">
  <xsd:restriction base="xsd:string">
    <!--  Benzine --> 
    <xsd:enumeration value="B" /> 
    <!--  Diesel --> 
    <xsd:enumeration value="D" /> 
    <!--  LPG/Gas --> 
    <xsd:enumeration value="L" /> 
    <!--  LPG G3 --> 
    <xsd:enumeration value="3" /> 
    <!--  Elektrisch --> 
    <xsd:enumeration value="E" /> 
    <!--  Hybride --> 
    <xsd:enumeration value="H" /> 
    <!--  Cryogeen --> 
    <xsd:enumeration value="C" /> 
    <!--  Overig --> 
    <xsd:enumeration value="O" /> 
  </xsd:restriction>
</xsd:simpleType>  
Run Code Online (Sandbox Code Playgroud)

我想把它映射到枚举,我得到了这个:

public enum Fuel
{
    B,
    D,
    L,
    E,
    H,
    C,
    O
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是xml可以包含一个3我似乎无法放入枚举类型的值.是否有任何解决方案将此值放入枚举中.

我也可以使用a -或a /中的其他值获取其他值,并且我想将其放入枚举类型中.
欢迎Anu建议!

c# xml enums

15
推荐指数
3
解决办法
3万
查看次数

BPMN的优点和缺点?

我希望你能从开发人员的角度告诉我BPMN的优点和缺点.

我正在将UML与BPMN进行比较,并且发现了UML的一些优点和缺点,但BPMN没有.

uml modeling bpmn

9
推荐指数
1
解决办法
2万
查看次数

在javascript中从内存中删除对象

我正在研究一个包含大量Javascript的AJAX应用程序.所有页面都通过AJAX加载.
在某个页面上,我有一个用Javascript构建的网格.现在,当我离开那个页面时,我想破坏那个网格.我调用jQuery.remove()但这只是从DOM中删除对象.
我的问题是如何从内存中删除此网格对象?因为当我离开页面时它仍然存在.

非常感激!

javascript garbage-collection memory-management

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

NHibernate 3.1 Query等于

我刚从NHibernate 2.1更新到NHibernate 3.1.我发现使用Linq的equals运算符没有实现其他类型的字符串.
我在互联网上发现了一篇解决这个问题的文章.这适用于基本类型,但现在我想比较自定义实体,我无法让它工作.

我尝试了一些实现但没有工作:

ReflectionHelper.GetMethodDefinition<CustomEntity>(x => x.Equals(<CustomEntity>(0)))  
ReflectionHelper.GetMethodDefinition<CustomEntity>(x => x.Equals(typeof(CustomEntity))
Run Code Online (Sandbox Code Playgroud)

我想要执行的查询如下:

Session.Query<SomeEntity>().Where(x => x.CustomEntity.Equals(CustomEntity);
Run Code Online (Sandbox Code Playgroud)

如何扩展equals以允许此操作而不是获取NotSupportedException?

c# linq nhibernate equals

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

使用MOQ在同一接口中模拟方法

我有一个服务方法,我想测试.该方法在同一个类中调用另一个方法.这个方法已经过测试,所以我想模仿那个方法.

这是我的设置:

private readonly Mock<INewsLetterRepository> _mockNewsLetterRepository;
private readonly Mock<INewsLetterService> _mockNewsLetterService;
private readonly INewsLetterService _newsLetterService;

public NewsLetterServiceTest()
{
    _mockNewsLetterRepository = new Mock<INewsLetterRepository>();
    _mockNewsLetterService = new Mock<INewsLetterService> {CallBase = true};
    _newsLetterService = new NewsLetterService(_mockNewsLetterRepository.Object);
}
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的测试:

[TestMethod]
public void CreateNewsLetter_Should_Return_Empty_NewsLetter()
{
    var template = new Template
                   {
                       PlaceHolders = new List<TemplatePlaceholder>()
                   };
    var newsLetter = new NewsLetter {Template = template};
    const string content = "<html><body><!--BROWSER--></body></html>";
    _mockNewsLetterService.Setup(x => x.BuildNewsLetterHTML(It.IsAny<NewsLetter>())).Returns(content);

    var actual = _mockNewsLetterService.Object.CreateNewsLetter(newsLetter);
    Assert.AreEqual(content, actual);
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是我正在模拟的函数:BuildNewsLetterHTML返回null而不是它应该返回的内容.

这是我想要测试的函数的简化版本:

public string CreateNewsLetter(NewsLetter newsLetter)
{ …
Run Code Online (Sandbox Code Playgroud)

c# moq mocking

4
推荐指数
1
解决办法
1485
查看次数