首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用动态MvcHtmlString加载DIV

用动态MvcHtmlString加载DIV
EN

Stack Overflow用户
提问于 2014-11-26 11:42:54
回答 1查看 681关注 0票数 0

我在一个需要通过jquery load函数填充的网页中创建了一个div。

代码语言:javascript
复制
<div id="foo">
</div>

这是应该填充div的调用(调用由其他客户端事件触发):

代码语言:javascript
复制
$("#foo").load("/someControllerName/someActionName" + " #foo");

someActionName方法:

代码语言:javascript
复制
public MvcHtmlString someActionName()
{
    //some other irrelevant code
    MvcHtmlString returnString = new MvcHtmlString("@Html.ActionLink(" + someFileName + ", \"Download\", new { request = \"" + sameFileId + "\"})");
}

实际上,在foosameFileId都具有有效值的情况下,用someActionName返回的MvcHtmlString内容填充someFileName div时,我遇到了问题。我做错了什么?我想达到的目标是可能的吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-26 13:01:26

如果您想运行动态剃须刀表达式并将HTML嵌入到您的DIV中,那么您就错了。MvcHtmlString只对表达式字符串进行编码,并将其返回给客户端。

该操作将返回jQuery代码无法理解的Razor表达式。剃须刀是由视图引擎执行的服务器端语言,因此从操作返回可用的HTML链接的唯一方法是使用服务器上的视图引擎执行包含在MvcHtmlString中的动态表达式并返回一个字符串。

执行动态剃须刀表达式的一个非常简单的方法是使用Partial Views。您的操作只会返回部分视图:

代码语言:javascript
复制
public PartialViewResult someActionName()
{
    var url = "/Contact";
    return PartialView("UrlView", url);
}

您的视图将呈现动态URL:

代码语言:javascript
复制
@model String
@{
    Layout = null;
}

@Html.ActionLink("Some Link", Model)

然后,您可以使用$("#foo").load()轻松地将动态URL嵌入到div中。

如果这是太多的代码,或者您可以尝试使用一个名为RazorEngine的开源项目来执行您的剃须刀语句,但我发现它非常错误。

http://razorengine.codeplex.com/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27148291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档