【问题标题】:Strongly Typed Model with MvcMailer使用 MvcMailer 的强类型模型
【发布时间】:2014-02-20 01:26:47
【问题描述】:

我在将强类型模型传递给 MvcMailer 视图时遇到了麻烦。我正在使用 asp.net mvc3 并使用 nuget 安装了 MvcMailer3。

没有错误消息并且消息已成功发送,但未填充数据字段。我正在做所有事情,也尝试使用 ViewBag 字段,但同样的问题 - 成功发送消息但未填充字段...

请帮助...我被困了两天!

这是我的控制器和查看代码....

//控制器代码

public ActionResult Index()
    {

        string invoicenumber = "BC-00000002";
        IEnumerable<Quantum.Models.usp_MasterPrintInvoice_Result> mpi = db.usp_MasterPrintInvoice(invoicenumber);

        IEnumerable<PrintDetailObject> printdetailobj = from anmpi in mpi select new PrintDetailObject { Head = anmpi.Head, ContributorName = anmpi.Name, RegistrationNumber = anmpi.RegistrationNumber, InvoiceNumber = anmpi.InvoiceNumber, InvoiceDate = anmpi.Date, Amount = anmpi.Amount, PaymentMonth = anmpi.Month, ReceivedBy = anmpi.Operator };


        ViewData.Model = printdetailobj.FirstOrDefault();



        IUserMailer mailer = new UserMailer();            
        mailer.Welcome().Send();
        return View();
    }

查看代码

 @model Quantum.Models.PrintDetailObject

@using Mvc.Mailer

<h2>Invoice</h2>


<fieldset>

<div class="print-details-page">
    <legend>@Html.DisplayFor(model => model.Head)</legend>

    <div class="display-label">InvoiceNumber</div>
    <div class="display-field">
        @Html.DisplayFor(model => model.InvoiceNumber)
    </div>
    <div class="clear"></div>   
    <div class="display-label">Date</div>
    <div class="display-field">
        @Html.DisplayFor(model => model.InvoiceDate)

    </div>
    <div class="clear"></div>   
    <div class="display-label">Recieved From:</div>
    <div class="display-field">
        @Html.DisplayFor(model => model.ContributorName)
    </div>
    <div class="clear"></div>   
    <div class="display-label">Registration Number:</div>
    <div class="display-field">
        @Html.DisplayFor(model => model.RegistrationNumber)
    </div>
    <div class="clear"></div>      

    <div class="display-label">Amount:</div>
    <div class="display-field">
        @Html.DisplayFor(model => model.Amount)
    </div>
    <div class="clear"></div>   
    <div class="display-label">Amount in Text:</div>
    <div class="display-field">
        @Html.DisplayFor(model => model.AmountText)
    </div>
    <div class="clear"></div>   
    <div class="display-label">Month:</div>
    <div class="display-field">
        @Html.DisplayFor(model => model.PaymentMonth)
    </div>
    <div class="clear"></div>   

    <div class="display-label">Recieved By:</div>
    <div class="display-field">
        @Html.DisplayFor(model => model.ReceivedBy)
    </div>
    <div class="clear"></div>  
    <br />
    <p>Received with many thanks.</p>

</div>

</fieldset>

我只收到以下文本作为电子邮件正文:

Invoice


InvoiceNumber
Date
Recieved From:
Registration Number:
Amount:
Amount in Text:
Month:
Recieved By:

Received with many thanks.

【问题讨论】:

    标签: asp.net asp.net-mvc-3 mvcmailer


    【解决方案1】:

    您好,我刚刚获得了回答我自己问题的见解。

    实际上,当我在“SendEmail”控制器中使用 ViewData.Model 时,该模型可用于其自己的视图,即“索引”视图,而不是与“UserMailer”控制器一起使用的剃刀视图,该控制器名为“Welcome”我的情况。

    要将模型传递给“UserMailer”操作,我们需要进行以下修改:

    //IUserMailer代码

        ...
        public interface IUserMailer
                {
                    MvcMailMessage Welcome(PrintDetailObject myModel);
                }
    

    //用户邮箱代码

        public virtual MvcMailMessage Welcome(PrintDetailObject myModel)
                {
                    //ViewBag.Data = someObject;
                    ViewData.Model = myModel;
    
                    return Populate(x =>
                    {
                        x.Subject = "Welcome";
                        x.ViewName = "Welcome";
    
                        x.To.Add("cmmwahid@hotmail.com");
    
                    });
                }
    

    //最后是控制器代码

    public ActionResult Index()
            {
    
                string invoicenumber = "BC-00000002";
                IEnumerable<Quantum.Models.usp_MasterPrintInvoice_Result> mpi = db.usp_MasterPrintInvoice(invoicenumber);
    
                IEnumerable<PrintDetailObject> printdetailobj = from anmpi in mpi select new PrintDetailObject { Head = anmpi.Head, ContributorName = anmpi.Name, RegistrationNumber = anmpi.RegistrationNumber, InvoiceNumber = anmpi.InvoiceNumber, InvoiceDate = anmpi.Date, Amount = anmpi.Amount, PaymentMonth = anmpi.Month, ReceivedBy = anmpi.Operator };
    
    
    
                IUserMailer mailer = new UserMailer();
                mailer.Welcome(printdetailobj.FirstOrDefault()).Send();
                return View();
            }
    

    这是电子邮件正文的最终输出:

    Invoice
    
    Generous Contribution
    InvoiceNumber
    BC-00000002
    Date
    15/02/2014
    Recieved From:
    Some Donor 
    Registration Number:
    M104/6
    Amount:
    $23.00
    Amount in Text:
    Twenty Three Dollars Only
    Month:
    May/2014
    Recieved By:
    someuser
    
    Received with many thanks.
    

    【讨论】:

      猜你喜欢
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多