如何使Razor不以html格式显示特殊字符
我正在处理的页面在只读输入框中显示数据库中的内容。我的问题是它将任何特殊字符显示为html代码(即:&显示为&)。如何使代码正确显示 我正在使用QuerySingle连接数据库,不知道这是否有区别。我不习惯用剃须刀。非常感谢您的帮助 有关守则:如何使Razor不以html格式显示特殊字符,html,asp.net-mvc,razor,Html,Asp.net Mvc,Razor,我正在处理的页面在只读输入框中显示数据库中的内容。我的问题是它将任何特殊字符显示为html代码(即:&显示为&)。如何使代码正确显示 我正在使用QuerySingle连接数据库,不知道这是否有区别。我不习惯用剃须刀。非常感谢您的帮助 有关守则: var queryloan = "SELECT * FROM loans WHERE LoanId = @0"; var queryloandata = db.QuerySingle(queryloan, queryformstatus_submitte
var queryloan = "SELECT * FROM loans WHERE LoanId = @0";
var queryloandata = db.QuerySingle(queryloan, queryformstatus_submitted.doc_loanid);
<form class="jotform-form" action="submit-form.cshtml?isadmin=@(isadmin)&loanid=@(loanid)" method="post" name="form_30905105572145" id="30905105572145" accept-charset="utf-8">
<input type="hidden" name="formID" value="30905105572145" />
<input type="hidden" name="doc_id" value="@doc_id" />
<div class="form-all">
<ul class="form-section">
<li id="cid_3" class="form-input-wide">
<div class="form-header-group">
<h2 id="header_3" class="form-header">
Borrower Sources & Uses Summary
</h2>
@if (queryformstatus_submitted.doc_approval == "Pending Approval" || queryformstatus_submitted.doc_approval == "Approved")
{
<text><br />
<br />
<div class="error">
This form has already been submitted and cannot be edited. It is for reference only.</div></text>
}
@if(userid != queryformstatus_submitted.doc_userid){
<text><br/><br/><div class="error">You may not edit this form. It is for reference only.</div></text>
}
</div>
</li>
<li class="form-line" id="id_4">
<label class="form-label-left" id="label_4" for="input_4">
1. Property Name:
</label>
<div id="cid_4" class="form-input">
<input type="text" class=" form-textbox" id="input_4" name="q4_1Property" size="40" value="@Helpers.checkEmptyPreFill(queryinputvalue,"q4_1Property",queryloandata.LoanName)"/>
</div>
</li>
var querylan=“从贷款中选择*,其中LoanId=@0”;
var querylandata=db.QuerySingle(querylan,queryformstatus_submitted.doc_loanid);
-
借款人来源及用途摘要
@如果(queryformstatus_submitted.doc_approval==“待定批准”| | queryformstatus_submitted.doc_approval==“已批准”)
{
此表单已提交,无法编辑,仅供参考。
}
@if(userid!=queryformstatus\u submitted.doc\u userid){
您不能编辑此表格。此表格仅供参考。
}
-
1.物业名称:
我不确定,但我相信可能是这个helper函数中的某些东西导致了html代码:
@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
@helper checkEmptyPreFill(IEnumerable queryinputvalue,字符串字段_id,字符串defaultval,int cloned=0){
var reqValue=queryinputvalue.FirstOrDefault(r=>r.field_name.Equals(field_id));
var返回_值=”;
如果(reqValue!=null){
返回值=reqValue.field\u数据;
}否则{
返回值=默认值;
}
如果(克隆==1){
返回_值=”;
}
@返回值
}razor助手返回一个
HelperResult
对象,因此您必须先将其转换为字符串,然后才能对其调用HtmlDecode
。替换:
@Helpers.checkEmptyPreFill(queryinputvalue,"q4_1Property",queryloandata.LoanName)
以下是:
@HttpUtility.HtmlDecode(Helpers.checkEmptyPreFill(queryinputvalue,"q4_1Property",queryloandata.LoanName).ToString())
我还建议您将一些逻辑和数据访问代码从视图中移到控制器中,但这将为您提供所需的结果。我假设您希望显示&;作为&。你试过使用吗?是的,我试过HTMLDE代码。我在输入值(即:WebUtility.HtmlDecode(querylandata.LoanName))中的变量周围尝试过它,但它没有做任何事情。有什么我遗漏的吗?我只是试图在错误的位置解码它吗?我让它像这样工作
wherevar htmlEncodedString=“Tom&;Jerry”谢谢,罗伯特。我按照你描述的方式试过了,但仍然是&;。可能是因为变量正在根据从数据库中提取的内容更改其值?还有其他想法吗?我不敢肯定。也许您可以更新您的问题,以提供更多关于“QueryAndata”对象及其LoanName属性的信息,也许可以使用一个示例值。如果可以从.cshtml视图文件中显示表单的代码,那也很好。