首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

vs2012 使用 mvc3.0 调用Response.Write有关问题

2012-12-19 
vs2012 使用 mvc3.0 调用Response.Write问题?本帖最后由 bjhui 于 2012-11-22 08:52:55 编辑3之前用VS2010

vs2012 使用 mvc3.0 调用Response.Write问题?
本帖最后由 bjhui 于 2012-11-22 08:52:55 编辑 3之前用VS2010 + MVC2.0 在views的aspx页面文件调用后台方法,方法内写了Response.Write("aaaa") 则直接在当前位置打印,但是现在用了MVC3.0 ,在cshtml文件中 调用同样的后台方法,却在打印到了body的最开始地方,请高手帮忙分析一下到底是什么原因,如何解决?我想让mvc3.0也和2.0一样输出到当前位置。

mvc2.0写法如下:
<body>
...
<div>
<% Common.Write(); %>
</div>
...
<body>

mvc3.0写法如下:
<body>
...
<div>



在线等高手赐教!!!1

@{Common.Write();}
</div>
...
<body>


后台方法:
piblic static void Write()
{
    HttpContext.Current.Response.Write("<a href='#'>bbbbbbbb</a>");
}

2.0输出结果
<body>
...
<div>
<a href='#'>bbbbbbbb</a>
</div>
...
<body>

3.0输出结果
<body>
<a href='#'>bbbbbbbb</a>
...
<div>
</div>
...
<body>
[最优解释]
razor视图是先render到内存缓冲区,而不是直接写到response输出流。
要把Common.Write方法改成这样:


public static class Common
{
public static void Write(this HtmlHelper helper)
{
helper.ViewContext.Writer.Write("aaaa");
}
}
在View里面这样写:
@{Html.Write();}
记得在头上加上 @using Common类所在的namespace;

[其他解释]
20.和3.0的结果是一样啊,你是不是贴错了,你试试JS打印效果,可以打指指定DIV内容
[其他解释]
引用:
20.和3.0的结果是一样啊,你是不是贴错了,你试试JS打印效果,可以打指指定DIV内容


3.0我是用的Razor(CSHTML) 视图引擎,仔细看了 肯定没错。确实是这个结果

热点排行