我有以下要求。需要在IFrame中显示Mime消息的html Body
查看
<iframe id="myIframe1" src="http://localhost:23245/Home/GetMimeMessageContent?FilePath=D \MimeFiles/htmlBody-small1.eml&PartName=HtmlBody" style="width:600px;height:600px;" >
控制器
public ActionResult GetMimeMessageContent(string filePath,string partName)
{
var mimeModel = BuildMimeModel(filePath, partName);
MimeHeaderModel mimeHeadermodel = new MimeHeaderModel();
mimeHeadermodel.FromAddress = mimeHeadermodel.ToAddress = mimeHeadermodel.Subject = string.Empty;
mimeModel.MimeHeader = mimeHeadermodel;
return View("MailDetailsView", mimeModel.MimeBody.HtmlBody);
}
它没有在Iframe中显示HtmlBody。但它呼唤控制器。我不知道我错过了什么。
答案 0 :(得分:1)
不确定您是否使用jquery,但是:
$(function() {
var $frame = $('<iframe style="width:200px; height:100px;">');
$('body').html( $frame );
setTimeout( function() {
$.ajax(
url="/Home/GetMimeMessageType/small1.eml/HtmlBody",
type:'GET',
success: function(data){
var doc = $frame[0].contentWindow.document;
var $body = $('body',doc);
$body.html(data);
}
);
},1 );
});
我没有测试过上面的代码,但这应该可以正常工作。有几点需要注意:
您需要创建一个自定义路由以将其映射到您的控制器: http://msdn.microsoft.com/en-us/library/cc668201(v=vs.100).aspx
您还需要将javascript $('body')。html()更改为div作为占位符的ID
你也会注意到我没有路径,如果这个路径永远不会改变,你应该添加你的代码路径,或者你可以使用formcollection并将jquery ajax更改为一个帖子,并在那里设置变量和值。
然后,您的内容会以iframe格式启动。
忘记整个html.renderaction,这个解决方案为你提供了更多的范围