2012-07-30 12 views
0

我正在使用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); 
} 

下面是EMailQuoteQuoteMailer

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 ?)

回答

1

MVCMailer Mailers擴展了ControllerBase,因此在一天結束時它們的工作方式與控制器完全相同。您應該能夠將您的數據發送到您的郵件程序視圖與您在常規控制器中使用的方式相同。 Here是一個鏈接,描述了您可以將數據發送到您的郵件程序視圖的所有方式。在你的情況你可以做到以下幾點,只要用你的強類型模型視圖預計類型QuoteData的型號:

public virtual MailMessage EMailQuote(QuoteData model) 
{ 
    var mailMessage = new MailMessage { Subject = "..." }; 

    mailMessage.To.Add(model.Step.EMail); 
    mailMessage.To.Add("[email protected]"); 

    ViewData.Model = model; 
    PopulateBody(mailMessage, viewName: "EMailQuote"); 

    return mailMessage; 
} 
+0

假設這是正確的(我看到的唯一變化是'ViewData.Model = model;'),那麼它只是在視圖中調用'@ Calculations.CalculationTotalOne'的問題? – REMESQ 2012-07-30 17:25:22

+0

那麼這將是@ Model.Calculations.CalculationTotalOne,因爲您的模型是QuoteData類型,Calculations是QuoteData的一個屬性。 – mreyeros 2012-07-30 17:39:07

+0

是的,這是我弄亂了。做@ Model.Calculations.CalculationTotalOne'不起作用。 '不能將方法組'TotalOne'轉換爲非委託類型'object''是錯誤。 (請注意,我在第一條評論中搞砸了,它不是「CalculationTotalOne」)。 – REMESQ 2012-07-30 20:29:00

相關問題