【问题标题】:How to display a fully formed HTML page as an MVC view?如何将完整的 HTML 页面显示为 MVC 视图?
【发布时间】:2019-04-24 07:14:33
【问题描述】:

MVC/ASP.NET/C#/html/javascript新手问题:

我正在尝试将一些遗留软件转移到 MVC 解决方案中。我有一个 MVC 控制器 ViewResult 方法,该方法对遗留系统进行 API 调用并返回一个字符串,该字符串是一个完整的 HTML 页面(包括 HTML 开始和结束标记)。将来某个时候,我会将逻辑重写为 MVC 视图,但现在我只需要显示该页面(最好在新选项卡中)。

我在控制器中试过这个:

return View((object)calendar);  

(其中“日历”是包含 HTML 文档的字符串)

在我看来我有

  @model string  
  @{ Layout = null; }  
  @Model  

但这没有用。
有什么想法吗?

【问题讨论】:

    标签: model-view-controller view model


    【解决方案1】:

    模型绑定是绑定模型类的对象。

    例如,([Solution].[Models].[Model class]),

    @model PassDatainMVC.Models.Record
    

    要将数据从控制器传递到视图,

    方法 1:ViewBag

    控制器:

    string data = "testing";
    ViewBag.see = data;
    return View();
    

    查看:

    @using PassDatainMVC.Models
    @ViewBag.see
    

    或者:

    方法二:模型绑定

    控制器(类):

    public string recordProperty;
    

    查看:

    @model PassDatainMVC.Models.Record
    @Model.recordProperty
    

    虽然您必须在第二种方法的数据字段中设置模型类下的属性。

    参考。 https://www.c-sharpcorner.com/article/asp-net-mvc-passing-data-from-controller-to-view/

    【讨论】:

    • 谢谢 Wing,但你和 Reha 都没有抓住重点。我不是 MVC 的 total 新手。我已经成功构建了一个视图视图并使用 ViewBag 和模型将数据传递到 .cshtml 文件中。当数据只是一个简单的字符串时,一切正常。但是,在我的情况下,如果数据是完整的 HTML 页面规范(即,字符串以 html 打开标记开始,以 html 关闭标记结束,中间有整个 html 规范(超过 5000 个字符)),那么我的一切尝试只显示 html 代码 而不是 html 页面本身。
    • 这可能会有所帮助:stackoverflow.com/questions/22781548/…
    • 谢谢翼。您对stackoverflow.com/questions/22781548/… 的引用解决了这个问题。我现在在我看来使用 Html.Raw。整个视图现在只包含两行代码:@{Layout = null;}@Html.Raw(ViewBag.calendar ) ;
    【解决方案2】:

    如果您只想要一个数据,您可以使用ViewBag。这很简单。

    您还想与模型一起发送。您应该使用此代码。

     public class Calendar
        {
            public string CalendarName { get; set; }
        }
    

    控制器

    Calendar newModel = new Calendar();
    newModel.CalendarName = "test name...";
    return View(newModel);  
    

    查看

     @model ModelNamespace.Calendar
    
    <h1> @Model.CalendarName </h1>
    

    【讨论】:

      【解决方案3】:

      谢谢雷哈!但不幸的是,您的任何建议都没有奏效。
      对于您的第一个建议,我使用了 ViewBag。在我更换的控制器中

      return View((object)calendar);
      

      ViewBag.calendar = calendar;
      return View();
      

      并用just替换了视图

      @{ Layout = null; }
      @ViewBag.calendar
      

      结果是用户只能查看实际的 HTML 代码,而不是 HTML 代码应该呈现的内容。

      对于你的第二个建议,我完全按照你的建议做了(除了我改变了 Model.CalendarName = "测试名称..."; 到 Model.CalendarName = 日历; 结果是一样的,用户只能查看 HTML 代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-13
        • 2021-01-19
        • 1970-01-01
        • 2012-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多