呈现MVC中的字符串就像渲染一个视图,可能吗?

问题描述:

是有可能使一个像这样的字符串:呈现MVC中的字符串就像渲染一个视图,可能吗?

public ActionResult Do(){ 
    s = " hello, click here <%=Html.ActionLink(\"index\",\"index\") %> "; 

    return Content(RenderString(s)); 
} 

结果会是这样的:

hello, click here <a href="/home/index">index</a> 

这是什么目的?您有一个控制器操作,它尝试评估一些字符串WebForms语法字符串并将其作为内容返回。为什么不简单地返回视图并让这个视图能够完成这项工作?

如果你想动态有意见(从数据库或东西来了),你可以写一个custom view engine和个性化他们的位置,这样,你的行动看起来像这样:

public ActionResult Do() 
{ 
    return View(); 
} 

和相应的视图内容将是从您的自定义视图引擎而不是标准文件位置获取。

如果要将视图的内容呈现为字符串,则已在many blog posts中进行了介绍。最后,如果你正在处理以电子邮件发送视图,那么可能有better solutions

因此,根据您试图达到的目标,可能会有不同的解决方案。

+0

@Darin Dimitrov所以这是不可能的? – Omu 2011-05-27 08:49:23

+0

@欧姆,当然这是可能的。正如我在答复中所说的,取决于你的最终目标,有不同的技巧。另一个我错过的就是写一个自定义的[虚拟路径提供者](http://www.wynia.org/wordpress/2008/12/aspnet-mvc-plugins/)。这是你的变量,它来自哪里? – 2011-05-27 08:50:10

+0

@Darin Dimitrov s来自数据库,基本上用户可以获得包含动作链接的消息,因为随着时间的推移,路由可以改变,我可以在末尾 – Omu 2011-05-27 08:55:02

public String Do(){ 
    string s = " hello, click <a href='" + Url.Action("Index") +"' > here </a>"; 

    return s; 
} 

那么如果你打电话{控制器} /你有你自己的字符串

EDITED

Marco

+0

Html.ActionLink必须评估 – Omu 2011-05-27 07:59:08

+0

@Omu可能UrlHelper可以帮助你,我编辑我的答案,并尝试了,它的工作,我希望是你想要的东西! – 2011-05-27 08:14:32

+0

这不再是一个字符串 – Omu 2011-05-27 08:26:00