我在一个需要通过jquery load函数填充的网页中创建了一个div。
<div id="foo">
</div>这是应该填充div的调用(调用由其他客户端事件触发):
$("#foo").load("/someControllerName/someActionName" + " #foo");someActionName方法:
public MvcHtmlString someActionName()
{
//some other irrelevant code
MvcHtmlString returnString = new MvcHtmlString("@Html.ActionLink(" + someFileName + ", \"Download\", new { request = \"" + sameFileId + "\"})");
}实际上,在foo和sameFileId都具有有效值的情况下,用someActionName返回的MvcHtmlString内容填充someFileName div时,我遇到了问题。我做错了什么?我想达到的目标是可能的吗?
谢谢!
发布于 2014-11-26 13:01:26
如果您想运行动态剃须刀表达式并将HTML嵌入到您的DIV中,那么您就错了。MvcHtmlString只对表达式字符串进行编码,并将其返回给客户端。
该操作将返回jQuery代码无法理解的Razor表达式。剃须刀是由视图引擎执行的服务器端语言,因此从操作返回可用的HTML链接的唯一方法是使用服务器上的视图引擎执行包含在MvcHtmlString中的动态表达式并返回一个字符串。
执行动态剃须刀表达式的一个非常简单的方法是使用Partial Views。您的操作只会返回部分视图:
public PartialViewResult someActionName()
{
var url = "/Contact";
return PartialView("UrlView", url);
}您的视图将呈现动态URL:
@model String
@{
Layout = null;
}
@Html.ActionLink("Some Link", Model)然后,您可以使用$("#foo").load()轻松地将动态URL嵌入到div中。
如果这是太多的代码,或者您可以尝试使用一个名为RazorEngine的开源项目来执行您的剃须刀语句,但我发现它非常错误。
http://razorengine.codeplex.com/
https://stackoverflow.com/questions/27148291
复制相似问题