Asp.net mvc 3 如何阻止HTML助手对HTML元素的value属性进行编码?

Asp.net mvc 3 如何阻止HTML助手对HTML元素的value属性进行编码?,asp.net-mvc-3,razor,underscore.js,Asp.net Mvc 3,Razor,Underscore.js,我有一个输入元素,可以很好地使用下划线模板 <input id="color" name="color" value="<%= color %>" /> 但这给了我 <input id="color" name="color" type="text" value="&lt;%= color %>" /> 如果您试图使用由代码隐藏提供的颜色,那么在绑定到视图的模型上放置颜色属性不是更好吗?然后你可以使用: public class MyMode

我有一个输入元素,可以很好地使用下划线模板

<input id="color" name="color" value="<%= color %>" />
但这给了我

<input id="color" name="color" type="text" value="&lt;%= color %>" />

如果您试图使用由代码隐藏提供的颜色,那么在绑定到视图的模型上放置颜色属性不是更好吗?然后你可以使用:

public class MyModel
{
    public string ColorField {get;set;} //not sure whether you wanted string color or hex color here.  CHange it as necessary
    //also add whatever else you need the UI to bind to
}
在控制器中,设置模型时,应输入默认值:

public ViewResult MyViewName()
{
     MyModel model = new MyModel { ColorField = "blue"; // or hex color / etc.}
     //add other initialization here
     return View(model);
}
那么在你看来

@model MyModel

@Html.TextBoxFor(model=>model.ColorField, "color")
在我看来,你似乎将传统的ASP.NET语法与Razor语法混合在一起,但我没有将ASP.NET语法与MVC结合使用,所以我可能错了,我想彻底打破旧的模式


不管怎样,我上面描述的方法是,我总是将默认值放入表单字段中,效果很好。

因为属性值应该被编码。我想你的问题是,你正在使用HTML生成工具生成
text/plain
,它看起来非常像
text/HTML
,但它不是HTML,不应被视为HTML。@muistooshort,我将代码包装在
text/template
标记中,但Razor助手在生成代码时并不完全关心这一点。下划线不像我希望的那样处理
。我只是在寻找一种让Razor和下划线.js一起工作的方法。我不知道Razor,所以我不能帮你。您是否考虑过简单地手工编写模板?如果Razor决定用HTML编码其他内容,或者对应该编码的内容进行编码,那么您的
Replace
kludge可能会失败。归结起来就是:您可能不应该使用HTML生成工具来生成非HTML的内容。@muistooshort,很公平。我尝试的唯一原因是Razor还基于服务器端注释生成客户端验证代码。使生活变得更轻松。
用于客户端下划线模板:@anyeone,mu是正确的。我在客户端使用Backbone/underline.js。对不起,我误解了这个问题。我的错!
public ViewResult MyViewName()
{
     MyModel model = new MyModel { ColorField = "blue"; // or hex color / etc.}
     //add other initialization here
     return View(model);
}
@model MyModel

@Html.TextBoxFor(model=>model.ColorField, "color")