在iframe中加载Mvc 4视图?不在IFrame中显示模型属性

时间:2013-04-04 16:13:13

标签: iframe asp.net-mvc-4 mime-types mime-message

我有以下要求。需要在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。但它呼唤控制器。我不知道我错过了什么。

1 个答案:

答案 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,这个解决方案为你提供了更多的范围