【问题标题】:How to make returned string from helper method not html encoded如何使从辅助方法返回的字符串不是 html 编码的
【发布时间】:2015-02-20 19:40:44
【问题描述】:

我正在使用 C# 辅助方法来检查输入字段的值是否应该预填充。但是,当返回值时,所有特殊字符都已替换为 html(即:& 现在是 &)。我正在寻找一种将其改回特殊字符的方法(即:将ab&c 改回ab&c)。我试过 HtmlDecode 但它对返回的值没有任何影响。

输入字段:

<input type="text" class=" form-textbox" id="input_4" name="q4_1Property" size="40" value="@Helpers.checkEmptyPreFill(queryinputvalue,"q4_1Property","ab&c")"/>

辅助方法:

@helper checkEmptyPreFill(IEnumerable<dynamic> queryinputvalue, string field_id, string defaultval, int cloned = 0) {  

var reqValue = queryinputvalue.FirstOrDefault(r => r.field_name.Equals(field_id));
var return_value = "";

if(reqValue != null){
    return_value = reqValue.field_data;
} else {

    return_value = defaultval;

}

if(cloned == 1){
    return_value = "";
}

@return_value
}

【问题讨论】:

  • HtmlDecode 应该没问题,你尝试了什么?
  • 我在 helpermethod 中的 return_value 和 defaultval 上尝试了 HttpUtility.HtmlDecode()
  • 你返回函数的结果了吗?它不会改变原始字符串。
  • 是的,我返回了函数的结果。但是在数据库中 & 中的值,当它从辅助方法返回时,它已更改为 &
  • 如果你的字符串是 "&" 可能有其他原因,它不会被转换为 &amp;amp; 看看这个 mvc fiddle dotnetfiddle.net/V3RkWM

标签: c# .net asp.net-mvc razor html-helper


【解决方案1】:

而不是@return_value

试试

new MvcHtmlString(return_value)

MvcHtmlString 表示不应再次编码的 HTML 编码字符串。

查看msdn documentation 了解有关 MvcHtmlString() 的更多详细信息

【讨论】:

  • 这样做给了我以下编译错误:编译器错误消息:CS0246:找不到类型或命名空间名称“MvcHtmlString”(您是否缺少 using 指令或程序集引用?)更多我需要添加到辅助方法中才能使这项工作?
  • @BrianCanini 试试new System.Web.Mvc.MvcHtmlString(return_value)
  • 这给了我这个:编译器错误消息:CS0234:命名空间“System.Web.Mvc”中不存在类型或命名空间名称“MvcHtmlString”(您是否缺少程序集引用?)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
相关资源
最近更新 更多