如何在.net mvc5中的控制器外部返回html字符串

本文关键字:外部 控制器 返回 html 字符串 net mvc5 | 更新日期: 2023-09-27 18:19:38

我正在使用.net MVC 5来构建一个web应用程序,并试图实现一个类似于Controller类的View()方法的方法,但只返回评估的html字符串。

我有我的课Person.cs:

public class Person
{
    public string name {get; set;}
    public string address {get; set;}
}

我的视图模板PersonSummary.chtml:

@model Project.Models.Person
<html>
    <h1>Name: @Model.Name</h1>
    <p>Address: @Model.Address</p>
</html>

我想做的是:

Person person = new Person(){ name = "foo", address = "bar" };
string myHTML = myNewFunction("PersonSummary", person);

我确实有一个当前的解决方案(破解),创建一个单独的控制器,并从ActionResult中获取字符串,但在做了一些更优雅的事情之后。

如何在.net mvc5中的控制器外部返回html字符串

也许值得尝试使用RazorEngine?它非常适合用于简单的视图(作为您的)。它非常适合生成html电子邮件。

样品方法:

public string Compile<T>(string viewContent, T model)
{
    return Razor.Parse(viewContent, model);
}
public string CompileFromPath<T>(string viewPath, T model)
{
    if (!File.FileExists(viewPath))
    {
        return null;
    }
    var viewContent = File.ReadAllText(viewPath, System.Text.Encoding.UTF8);
    return this.Compile(viewContent, model);
}

用法:

var html = CompileFrompath(Server.MapPath("~/my/view/path.cshtml"), person);

备注:

  1. 我不知道库是如何处理HtmlUrl的IDDIAtional助手的。我相信它可以配置为处理所有需要的扩展