2014-08-28 35 views
0

我正在使用.net MVC 5来构建一个web应用程序并尝试实现类似于Controller类的View()方法的方法,但只返回评估的html字符串。如何在.NET中返回一个控制器以外的html字符串mvc5

我有我的课Person.cs:

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

我的视图模板PersonSummary.cshtml:

@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获取字符串,但后面的东西它更优雅。

回答

1

也许值得尝试使用RazorEngine?这是完美的使用简单的意见(如你)。它符合完美的f.e.用于生成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 iddational助手。我相信它可以配置为处理所有需要的扩展。
+0

谢谢,我最终选择了RazorEngine,只是使用字符串作为我的视图。不幸的是无法从服务器上读取文件,因此我失去了智能感知。稍后再回来,干杯! – user2865446 2014-09-02 01:53:55

+0

@ user2865446随时发布您读取服务器上的文件的问题 - 我们可以帮助:) – 2014-09-02 04:51:30

相关问题