加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如果是Razor DisplayFor和TextBoxFor MVC4中的其他逻辑

发布时间:2020-12-16 07:24:03 所属栏目:asp.Net 来源:网络整理
导读:如果设置了某个变量,我希望某个字段成为文本框,如果不是,我希望该字段只显示该值,但该值不可编辑. 我在我的视图中添加了一些if else逻辑,并且不会显示该值.我在这里错过了什么吗? @{ if (isFlagSet) { Html.TextBoxFor(m = m.HostpitalFinNumber,new { @Val
如果设置了某个变量,我希望某个字段成为文本框,如果不是,我希望该字段只显示该值,但该值不可编辑.

我在我的视图中添加了一些if else逻辑,并且不会显示该值.我在这里错过了什么吗?

@{
                if (isFlagSet) {
                    Html.TextBoxFor(m => m.HostpitalFinNumber,new { @Value = Model.HostpitalFinNumber });
                    Html.ValidationMessageFor(m => m.HostpitalFinNumber);
                }
                else {
                    Html.DisplayTextFor(m => m.HostpitalFinNumber);
                }
            }

更新中…

我将代码更改为

@if (isFlagSet) {
                    Html.TextBoxFor(m => m.HostpitalFinNumber);
                    Html.ValidationMessageFor(m => m.HostpitalFinNumber);
            }
            else {
                    Html.DisplayFor(m => m.HostpitalFinNumber);
            }

以下是生成的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>

回答

我忘了把@放在我的html助手面前,摆脱了半冒号.

解决方法

您的Razor语法错误,正确的语法是(您不需要周围的@ {}):

@if (isFlagSet) {
    @Html.TextBoxFor(m => m.HostpitalFinNumber)
    @Html.ValidationMessageFor(m => m.HostpitalFinNumber)
}
else {
    @Html.DisplayTextFor(m => m.HostpitalFinNumber)
}

Html帮助程序不直接写入响应(名称以Render开头的名称除外),因此您需要使用@将生成的HTML写入输出.

请注意,您不需要使用表达式new {@Value = Model.HostpitalFinNumber}手动设置值,因为Html.TextBoxFor将负责处理它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读