我使用.net MVC 5构建Web应用程序并尝试实现类似于Controller类的View()方法的方法,但只返回已评估的html字符串。
我有我的班级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);
我确实有一个当前的解决方案(hack)创建一个单独的控制器并从ActionResult获取字符串但是在更优雅的东西之后。
答案 0 :(得分: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);
说明:
Html
或Url
的iddational助手。我相信它可以配置为处理所有需要的扩展。