我正在使用 MvcMailer 并尝试传递计算值。这些值是在用户将信息输入向导表单(文本框、单选按钮列表等)后计算的。对不起,如果这很长,但我想提供尽可能多的上下文以避免“显示更多代码”评论。我正在使用视图模型 ( QuoteData
)。我的“价格”保存在模型 ( PriceQuote
) 中。
这是我的示例计算(以及随之而来的“总”代码)Calculation.cs
:
public decimal decOne(QuoteData quoteData)
{
if (quoteData.Step.RadioButtonOne == Step.EnumOne.ChoiceOne)
return PriceQuote.priceOne;
else
return 0;
}
....
public decimal TotalOne(QuoteData quoteData)
{
decimal totalOne = PriceQuote.priceBase;
total += this.decOne(quoteData);
....
return total;
}
我的视图模型是这样的(不确定这是否正确,或者我是否应该在此处进行一些计算):
public class QuoteData
{
public Calculations Calculations { get; set; }
....
}
public QuoteData()
{
Calculations = new Caluclations();
}
我之前为模拟目的所做的是将它放在模拟控制器中的一个动作中:
Calculations calc = new Calculations();
var totalone = calc.TotalOne(quoteData);
ViewBag.CalculateTotalOne = totalone;
return View(quoteData);
我在页面中这样称呼它:
@((ViewBag.CalculationTotalOne).ToString("C2"))
同样,这是出于模拟目的。现在,使用 MvcMailer 我不能做同样的事情,并且整个周末都在努力弄清楚如何让它工作。我研究和尝试过的一切都没有奏效。我确定这是我忽略的简单事情。
MvcMailer 的视图不使用控制器。它使用一个类(QuoteMailer
在我的例子中)。这是我的向导传递给 MvcMailer 的方式:
public ActionResult Submitted()
{
QuoteMailer.EMailQuote(quoteData).Send();
return View(quoteData);
}
这是EMailQuote
在QuoteMailer
:
public virtual MailMessage EMailQuote(QuoteData model)
{
var mailMessage = new MailMessage { Subject = "..." };
mailMessage.To.Add(model.Step.EMail);
mailMessage.To.Add("web@site.com");
ViewData = new ViewDataDictionary(model);
PopulateBody(mailMessage, viewName: "EMailQuote");
return mailMessage;
}
任何帮助表示赞赏(我如何在这里传递我的计算,而在我使用的模拟场景中ViewBag
?)