工作是这样的,我要把获得的报表,作为邮件发送出去。但这个数据在控制Cotrollers中是这样的,
[HttpGet] public JsonResult GetList(string index, string id,DateTime time,IdentStateEnum state, string sidx, string sord, int page, int rows) { var jqGridResponse = new JqGridResponse<IdeIdent>(){ PageIndex = page, PageSize = rows }; IQueryable<IdeIdent> data = identRepository.GetList(id,time,state); jqGridResponse.TotalRecordsCount = data.Count(); var pagedViewModel = new PagedViewModel<IdeIdent> { Query = data.AsQueryable<IdeIdent>().OfType<IdeIdent>(), GridSortOptions = new GridSortOptions { Column = sidx, Direction = sord.Equals("asc") ? SortDirection.Ascending : SortDirection.Descending }, DefaultSortColumn = sidx, Page = page, PageSize = rows, } .Setup(); pagedViewModel.PagedList.AsParallel().ToList().ForEach(p => DomainObjectToJson(jqGridResponse, p)); return jqGridResponse.ToJsonResult();
}
现在我要在同一个Controllers中运用这个转成对象怎么做呢?求解?
这样才能把它作为邮件的内容拼成模板后发出去。
邮件发送是这样的:
public ActionResult Send() { IdeDaily vm = new IdeDaily(); vm.MailTo = "PXMWHDH;PXMWZMW"; vm.MailCc = ""; vm.Subject = "大修再鉴定" + DateTime.Now.ToString("yyyy-MM-dd") + "日日报"; vm.BodyHtml = "邮件内容"; return View(vm); } [HttpPost] public ActionResult Send(IdeDaily vm) { try { MailMessage message = new MailMessage(); var smtpClient = new SmtpClient(); message.To = "PXMWHDH;PXMZMW"; message.Cc = "PXMZMW"; //抄送到 message.Subject = "大修再鉴定" + DateTime.Now.ToString("yyyy-MM-dd") + "日日报"; message.Body = BodyHtml();//"邮件内容,测试邮件发送!"; smtpClient.Send(message); return Json(new { result = true, message = "发送成功!" }, JsonRequestBehavior.AllowGet); } catch (Exception ex) { this.Log.LogError(ex); return Json(new { result = false, message = "发送失败!" }, JsonRequestBehavior.AllowGet); } }
public string BodyHtml() { HttpContext.Response.ContentType = "text/html"; string strHtml = CommonHtml.GetFileString("~/Areas/IDE/TempHelper/TempDaily.htm"); StringBuilder strTable = new StringBuilder(); strTable.AppendFormat(string.Format("{0},{1}"), Datastr1(), Datastr2()); HttpContext.Response.Write(strHtml.Replace("[temp1]", strTable.ToString())); HttpContext.Response.Write(strHtml.Replace("[temp2]", strTable.ToString())); return strHtml; } public string Datastr1() {
return ""; } public string Datastr2() { return ""; }
我要怎么利用同一个Controllers上的JsonResult里的数据转成 对像拼成html模板呢?求解!谢谢
JsonResult实际上的string,然后content-encoding是application/json。
你这个代码里面里面需要重用的是IQueryable<IdeIdent> data = identRepository.GetList(id,time,state);
应该将这段作为业务层返回的代码。然后发邮件的时候采用这个data来处理。而不是从JsonResult中获取。
嗯已经通过你的指点重新完成了。谢谢
@renshen4322: :)
一般jsonresult是放一个对象进去的,一般都知道对应类型.
你直接解析字符串,而且jsonresult里面好像是有data成员,里面就是原来的对象数据.
如果你是取到一个json字符串就需要解析.如果直接一个jsonresult返回值.你可以直接.data强转类型.看行不行
嗯谢谢指点。
已经自己解决