从处理器发送的字符串在处理为HTML时会分离

时间:2017-03-22 12:06:19

标签: javascript c# jquery html validation

我正在尝试将验证规则作为字符串从控制器发送到输入元素。字符串发送正确,但未正确呈现(您可以在下面的片段中看到它分离"字段是必需的"到"字段"是="&#34 ; required ="")。

这是HTML呈现后的结果:

<input type="text" class="form-control valid" id="Code" name="Code" 
     value="INDiamnana" 
     data-rule-required="true" 
     data-msg-required="Field" is="" required="" 
     aria-required="true">

在控制器中,我以类似于此的方式构建字符串:

 stringBuilder.Append("data-rule-required=true");
 stringBuilder.AppendLine();
 stringBuilder.Append("data-msg-required=Field is required" );

我在剃刀中说明:

<input type="text" class="form-control valid" 
 id="..." name="..." 
 value="..." 
 @Model.ValidationRules />

@ Model.ValidationRules是格式为

的字符串
  

&#34; data-rule-required = true data-msg-required =字段是必需的&#34;

有谁知道如何明确说我希望我的字符串不可分离? 或者也许我做错了,我应该以不同的方式发送字符串?

1 个答案:

答案 0 :(得分:2)

问题是因为HTML属性值包含空格,这是无效的。第一个单词Field被解释为值,而isrequired被解释为其他属性。因此,浏览器会在其后添加=""

要解决此问题,您需要用双引号包装属性值:

stringBuilder.Append("data-rule-required=\"true\"");
stringBuilder.Append("data-msg-required=\"Field is required\"");

另请注意,在stringBuilder中使用AppendLine()是多余的。 HTML并不关心空白。它所做的就是让你的代码更加冗长。