Sof*_*ant 4 razor asp.net-mvc-4
如果设置了某个变量,我希望某个字段成为文本框,如果不是,我希望该字段只显示该值,但该值不可编辑.
我在我的视图中添加了一些if else逻辑,并且不会显示该值.我在这里错过了什么吗?
@{
if (isFlagSet) {
Html.TextBoxFor(m => m.HostpitalFinNumber, new { @Value = Model.HostpitalFinNumber });
Html.ValidationMessageFor(m => m.HostpitalFinNumber);
}
else {
Html.DisplayTextFor(m => m.HostpitalFinNumber);
}
}
Run Code Online (Sandbox Code Playgroud)
更新中...
我将代码更改为
@if (isFlagSet) {
Html.TextBoxFor(m => m.HostpitalFinNumber);
Html.ValidationMessageFor(m => m.HostpitalFinNumber);
}
else {
Html.DisplayFor(m => m.HostpitalFinNumber);
}
Run Code Online (Sandbox Code Playgroud)
以下是生成的HTML.注意如何为Phone而不是医院fin写入输入值.确定为什么会发生这种情况.
<tr><td>
<label for="Phone">Phone</label>
</td>
<td>
<input Value="4124880798" id="Phone" name="Phone" type="text" value="4124880798" />
</td></tr>
<tr><td>
<label for="HostpitalFinNumber">HostpitalFinNumber</label>
</td>
<td>
</td></tr>
Run Code Online (Sandbox Code Playgroud)
回答
我忘了把@放在我的html助手面前,摆脱了半冒号.
您的Razor语法错误,正确的语法是(您不需要周围环境@{ }):
@if (isFlagSet) {
@Html.TextBoxFor(m => m.HostpitalFinNumber)
@Html.ValidationMessageFor(m => m.HostpitalFinNumber)
}
else {
@Html.DisplayTextFor(m => m.HostpitalFinNumber)
}
Run Code Online (Sandbox Code Playgroud)
Html帮助程序不直接写入响应(名称的开头除外Render),因此您需要使用@将生成的HTML写入输出.
请注意,您不需要手动设置表达式值,new { @Value = Model.HostpitalFinNumber }因为它Html.TextBoxFor会处理它.
| 归档时间: |
|
| 查看次数: |
19004 次 |
| 最近记录: |