我正在使用MvcMailer並嘗試傳遞計算值。這些值是在用戶將信息輸入到嚮導窗體(文本框,單選按鈕列表等)後計算的。對不起,如果這是冗長的,但我想盡可能多地給上下文以避免「顯示更多代碼」的評論。我正在使用查看模型(QuoteData
)。我的「價格」保存在模型中(PriceQuote
)。試圖將計算值傳遞到沒有控制器的視圖
下面是一個例子計算(以及隨之而來的「總」碼)在我Calculation.cs
:
我的視圖模型是這樣的(不知道這是正確的,或者如果這是我應該做一些計算):
: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("[email protected]");
ViewData = new ViewDataDictionary(model);
PopulateBody(mailMessage, viewName: "EMailQuote");
return mailMessage;
}
任何幫助表示讚賞(我如何通過我的計算在這裏,而在模擬場景中我用ViewBag
?)
假設這是正確的(我看到的唯一變化是'ViewData.Model = model;'),那麼它只是在視圖中調用'@ Calculations.CalculationTotalOne'的問題? – REMESQ 2012-07-30 17:25:22
那麼這將是@ Model.Calculations.CalculationTotalOne,因爲您的模型是QuoteData類型,Calculations是QuoteData的一個屬性。 – mreyeros 2012-07-30 17:39:07
是的,這是我弄亂了。做@ Model.Calculations.CalculationTotalOne'不起作用。 '不能將方法組'TotalOne'轉換爲非委託類型'object''是錯誤。 (請注意,我在第一條評論中搞砸了,它不是「CalculationTotalOne」)。 – REMESQ 2012-07-30 20:29:00