2017-02-13 61 views
0

将传统剃刀语法应用于textarea并应用asp-for标记(以及在视图模型中应用RequiredAttribute)似乎会互相干扰。标记帮助程序似乎干扰传统剃刀语法

@{ string disabled = "disabled"; } 
<textarea asp-for="Motivation" class="form-control" rows="3" @disabled></textarea> 

disabled属性不适用。

<textarea 
    class="form-control" rows="3" 
    data-val="true" data-val-required="..." 
    id="Motivation" name="Motivation" placeholder="..."> 
</textarea> 

我能理解的东西一定是想错了(或者是不支持的),因为asp-for需要重写才能从视图模型得出的匹配属性。

我的主要问题是:

  1. 这是记录/预期的行为?
  2. 对于HTML输出进行类似修改的'ASP.NET'方式是什么?
+0

我还没有尝试过,但我希望你需要遵循'attr =“value”'方法。所以像'disabled =“@ disabled”''。 –

+0

@PeterB有趣的是,这确实有用!此外,[非最小化版本在XHTML中似乎是必需的](http://www.w3schools.com/tags/att_input_disabled.asp)。但是,我不相信'disabled =“”'或'disabled =“启用”'是有效的,所以它不能解决这个问题。 –

+0

当'@ disabled'被设置为'disabled = \“disabled \”'时,整个属性被再次省略。 –

回答

0

我只是刚刚开始使用ASP.NET,所以我不确定第一个问题:“这是记录/预期的行为吗?”因此这只是一个部分答案,我正在寻找关于第一个问题的更多信息。

然而,要回答第二个问题,一种可能性似乎依靠其提供更多的灵活性(年长?)HTML助手:

@{ string disabled = "disabled"; } 
@Html.TextAreaFor(
    m => m.Motivation, 
    new { @class = "form-control", rows = 3, disabled = disabled }) 

第二个参数是被应用到其他属性输出textarea

此外,还应该注意的是,在XHTML attribute minimization is forbidden中。

在XHTML,属性的最小化是禁止的,和残疾人 属性必须被定义为<input disabled="disabled" />

我似乎无法找到这方面的官方文档。