由于各种原因,这可能是一个坏主意,但我仍然希望实现它。有没有办法从呈现视图包含一些HTML和代码块的字符串?我最初的想法是,我将实现IView
,并在构造函数中获取HTML字符串。然后将其与模型一起传递给View
方法,如下所示:
public ActionResult MyAction() {
var str = @"<html><body><%= Model.SomeProperty %></body></html>";
var myView = new MyIView(str);
return View(myView, Model);
}
此时我有点陷入困境,因为我不知道如何调用视图引擎来解析字符串并使其全部工作。或者,此时,我是否必须自己解析并呈现它?
答案 0 :(得分:2)
不幸的是,这对ASPX页面来说并不容易。
在ASP.Net Razor中,它更容易。
如果你真的想这样做,请注册一个自定义VirtualPathProvider
,用于解析字符串的特殊路径,然后拨打BuildManager.CreateInstanceFromVirtualPath
,将其投放到ViewPage
,设置其ViewData
},并致电RenderView
。
答案 1 :(得分:0)
您可以在行动中返回string
。
public string MyAction() {
return @"<html><body>" + Model.SomeProperty + @"</body></html>";
}