我正在编写一个小型Ruby程序,它将从数据库中提取记录并每天发送一封HTML电子邮件.我正在尝试使用ActionMailer 3.0.3,但我遇到了问题.到目前为止,我在Rails之外使用ActionMailer所做的所有搜索都适用于版本3之前的版本.有人能指出我在哪里找到如何执行此操作的资源的正确方向吗?这是我到目前为止在我的邮件文件中的位置:
# lib/bug_mailer.rb
require 'action_mailer'
ActionMailer::Base.delivery_method = :file
class BugMailer < ActionMailer::Base
def daily_email
mail(
:to => "example@mail.com",
:from => "example@mail.com",
:subject => "testing mail"
)
end
end
BugMailer.daily_email.deliver
Run Code Online (Sandbox Code Playgroud)
我肯定会被困在哪里发表意见.我告诉ActionMailer模板所在的每一次尝试都失败了.
我想我也应该问一下是否有不同的方法可以完成这个程序.基本上,我现在正在从头开始做所有事情.显然是什么让Rails很棒是它的惯例,所以试图自己使用部分Rails浪费时间?有没有办法在不创建完整的Rails应用程序的情况下获得类似Rails的环境?
我试图找出确定Dictionary<string, string>对象是否包含所有一组string对象作为键的最佳方法.
我可能没有任何意义,所以这里有一些使用一组确定字符串的示例代码:
public static bool ContainsKeys(this Dictionary<string, string> dictionary)
{
return dictionary.ContainsKey("fname") && dictionary.ContainsKey("lname") && dictionary.ContainsKey("address1") &&
dictionary.ContainsKey("city") && dictionary.ContainsKey("state") && dictionary.ContainsKey("zip");
}
Run Code Online (Sandbox Code Playgroud)
这里的想法是接受任意一组字符串,keys并检查Dictionary<string, string>对象的键是否包含所有字符串keys.
我试图沿着LINQ路走下去:
public static bool ContainsKeys(this Dictionary<string, string> dictionary, string[] keys)
{
var query = from entry in dictionary
where keys.Contains(entry.Key)
select entry;
return query.Any();
}
Run Code Online (Sandbox Code Playgroud)
我不知道我是否在正确的道路上 - 我认为如果我想知道是否dictionary包含任何这些字符串作为键,这可能会有效.
我是C#和.NET的新手,我发现自己遇到了一个问题而且我不确定我需要朝哪个方向前进.
我公司与第三方订阅履行系统合作,实现许多功能,包括计费和续订.该系统能够在触发某些事件时自动发送电子邮件.例如,每个订阅都会通过,我们称之为续订系列.这个系列包括在订阅的整个生命周期中传播的几项努力.
当订阅符合本系列的某些努力时,我们可以生成一个事件,该事件将导致系统向具有XML有效负载的给定URI发送HTTP POST请求.端点(.aspx页面)接收请求,处理它,并返回响应,在本例中为HTML代码.该HTML随后由履行系统通过电子邮件发送出去.
我有一个基本的Web应用程序,其中一些.aspx页面已经启动并运行.每个页面后面都有一个相应的.cs代码.
这是我的问题真正开始的地方.在我们的履行系统中,我们只能为每个事件和产品组合定义一个端点.因此,无论订阅当时符合哪种努力,事件本身都是相同的.但是,不同之处在于HTTP POST请求的XML.我可以通过XML来判断生成请求的工作量.重要的原因是因为相应电子邮件的HTML对于每项工作都是不同的.要用一种略微不同的方式来表达它,应该呈现的HTML从上到下是不同的,因为努力1比努力2.努力2不同于努力3,依此类推.
所以,我想弄清楚的是如何"引导流量".由于所有这些请求都将来到单个端点,因此我需要为相应的工作动态返回正确的HTML.
在同一个应用程序的另一个.aspx页面中,有一些内容需要根据请求的内容动态生成.在这种情况下,我使用了两个PlaceHolder控件,每个可能的文本集一个.然后,在后面的代码中,Visible根据需要将其属性设置为true或false.
在这种情况下,我很早就解除了这样做的想法,因为有五到六个HTML模板,并且将所有这些模板填充到一个页面中会很麻烦且难以维护.
这就是我不知道接下来该做什么的地方.我觉得用户控制或自定义控件将成为可行的方法?但是,简单的旧重定向是一个更好的选择吗?或者以上都没有?
我正在Visual Studio 11 Beta中创建一个活动库(尽管我已经在VS2010中重复了我的所有步骤,结果相同),目标是.NET 4.0框架.
当我开始通过工作流设计器输入参数时,我注意到默认值框中的" 输入VB表达式 "消息.我不确定如何将语言上下文从VB更改为C#.
要创建项目,我按照以下步骤操作:
转到文件 > 新建,然后选择项目...
在New Project对话框窗口的Installed > Templates部分中,选择Visual C# > Workflow > Activity Library
像往常一样命名项目,然后单击" 确定"
这基本上就是它.我注意到默认Activity1.xaml文件在默认值字段中期望VB.我删除了它,然后按照这些步骤创建一个新的Activity:
右键单击该项目,然后选择Add > New Item ...
在"添加新项"对话框窗口中,导航到" 已安装" >" Visual C#项目" >" 工作流" >" 活动"
命名活动,然后单击"确定"
结果相同,默认值字段需要VB表达式.
当我查看XAML代码时,我可以清楚地看到Microsoft.VisualBasic.Activities列出的命名空间和一个VisualBasic.Settings元素,但我不知道该如何改变它; 每次我尝试,我最终都搞砸了.这是生成的XAML代码:
<Activity mc:Ignorable="sads sap" x:Class="THINKImport.CustomerAddOrderAdd"
xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities"
xmlns:local="clr-namespace:THINKImport.THINKWebReference"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:mva="clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities"
xmlns:s="clr-namespace:System;assembly=System.Core"
xmlns:s1="clr-namespace:System;assembly=System"
xmlns:s2="clr-namespace:System;assembly=System.ServiceModel"
xmlns:s3="clr-namespace:System;assembly=mscorlib"
xmlns:sads="http://schemas.microsoft.com/netfx/2010/xaml/activities/debugger"
xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation"
xmlns:t="clr-namespace:THINKImport"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<x:Members>
<x:Property Name="user_login_data" Type="InArgument(local:user_login_data)" />
<!--Removed the other …Run Code Online (Sandbox Code Playgroud) 我是第一次写一些用户控件,我想知道是否有一种方法可以清理我的一些代码.(如果你想了解我正在做什么的更多背景知识,请看这个问题.)
我有一个BaseControl类,基本上,解析一些XML数据,然后,根据该数据中包含的内容,调用适当的UserControl并在其路上发送数据.这是一个例子:
public partial class BaseControl : User Control
{
protected void Page_Load(object sender, EventArgs e)
{
... //code that parses the data
var renewalDef = effort.Attributes["renewal_def"].Value;
var effortNumber = effort.Attributes["renewal_effort_number"].Value;
if (effortNumber == "1")
{
var effortControl = (NAVLEffort1) Page.LoadControl("~/NAVLSeriesControls/NAVLEffort1.ascx");
effortControl.transactionData = transaction; //'transaction' is a Hashtable object
HtmlContent.Controls.Add(effortControl); //'HtmlContent' is a PlaceHolder control on BaseControl.ascx page
}
if (effortNumber == "2")
{
var effortControl = (NAVLEffort2) Page.LoadControl("~/NAVLSeriesControls/NAVLEffort2.ascx");
effortControl.transactionData = transaction; //'transaction' is …Run Code Online (Sandbox Code Playgroud) 我是.NET和C#的新手,来自Ruby的背景.虽然我已经在C#中成功开发了几个小应用程序,但我还有很多需要学习的地方.但令我困惑的一件事是找到一种在对象上调用多个方法的有效方法.我将举一个使用字符串的例子.
我习惯于在Ruby中做这样的事情:
my_string = "The quick brown fox\tjumped over the lazy dog\t\n"
puts my_string.strip.split("\t")
Run Code Online (Sandbox Code Playgroud)
但是,要在C#中完成同样的事情,这就是我现在所知道的事情:
var myString = "The quick brown fox\tjumped over the lazy dog\t\n";
var myStringTrim = myString.Trim();
var myStringSplit = myStringTrim.Split('\t');
foreach (var s in myStringSplit)
{
Console.WriteLine(s);
}
Run Code Online (Sandbox Code Playgroud)
那么,有没有更有效的方法在C#中实现这一目标?
这个特殊的例子让我想知道如果我使用这个方法来读取,解析和处理大型文本文件或类似的东西会对性能产生什么影响.