Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果文本框有值,如何将其设置为只读?_C#_Asp.net Mvc - Fatal编程技术网

C# 如果文本框有值,如何将其设置为只读?

C# 如果文本框有值,如何将其设置为只读?,c#,asp.net-mvc,C#,Asp.net Mvc,如果文本框在MVC视图中有值,我想将其设置为只读 所以我写 <tr> @if (model.first_name != "" ) { <td > @Html.LabelFor(model => model.first_name): </td> <td > @Html.TextBoxFor(model => mode

如果文本框在MVC视图中有值,我想将其设置为只读

所以我写

 <tr>
 @if (model.first_name != "" ) { 
   <td >
                @Html.LabelFor(model => model.first_name):
            </td>
            <td >
                @Html.TextBoxFor(model => model.first_name)
                <span class="required">*</span>
                @Html.ValidationMessageFor(model => model.first_name)
            </td>
@ else  
  <td >
  @Html.LabelFor(model => model.first_name):
            </td>
            <td >
                @Html.EditorFor(model => model.first_name)
                <span class="required">*</span>
                @Html.ValidationMessageFor(model => model.first_name)
            </td>
@}

            <td >
                @Html.LabelFor(model => model.first_name):
            </td>
            <td >
                @Html.EditorFor(model => model.first_name)
                <span class="required">*</span>
                @Html.ValidationMessageFor(model => model.first_name)
            </td>
        </tr>

@如果(model.first_name!=“”){
@Html.LabelFor(model=>model.first_name):
@Html.TextBoxFor(model=>model.first_name)
*
@Html.ValidationMessageFor(model=>model.first_name)
@否则
@Html.LabelFor(model=>model.first_name):
@EditorFor(model=>model.first_name)
*
@Html.ValidationMessageFor(model=>model.first_name)
@}
@Html.LabelFor(model=>model.first_name):
@EditorFor(model=>model.first_name)
*
@Html.ValidationMessageFor(model=>model.first_name)
但是它不起作用。。 怎么解决呢??
如何操作???

在razor中创建一个if语句,并在要禁用的输入/编辑器上设置一个disabled=“disabled”

@if
(model.first_name != null)
{

   <td >
            @Html.LabelFor(model => model.first_name):
        </td>
        <td >
            @Html.TextBoxFor(model => model.first_name)
            <span class="required">*</span>
            @Html.ValidationMessageFor(model => model.first_name)
        </td>
}
else
{
  <td >
  @Html.LabelFor(model => model.first_name):
        </td>
        <td >
            @Html.EditorFor(model => model.first_name, new { disabled = "disabled", @readonly = "readonly" }))
            <span class="required">*</span>
            @Html.ValidationMessageFor(model => model.first_name)
        </td>

        <td >
            @Html.LabelFor(model => model.first_name):
        </td>
        <td >
            @Html.EditorFor(model => model.first_name)
            <span class="required">*</span>
            @Html.ValidationMessageFor(model => model.first_name)
        </td>
    </tr>
@if
(model.first_name!=null)
{
@Html.LabelFor(model=>model.first_name):
@Html.TextBoxFor(model=>model.first_name)
*
@Html.ValidationMessageFor(model=>model.first_name)
}
其他的
{
@Html.LabelFor(model=>model.first_name):
@EditorFor(model=>model.first_name,新的{disabled=“disabled”,@readonly=“readonly”}))
*
@Html.ValidationMessageFor(model=>model.first_name)
@Html.LabelFor(model=>model.first_name):
@EditorFor(model=>model.first_name)
*
@Html.ValidationMessageFor(model=>model.first_name)

}

您可以将字段设置为
readonly=“readonly”
而不是
disabled=“disabled”
一个只读字段值将提交到服务器,而用户仍然无法编辑该值。

您可以修改视图模型,如下所示

public class MyViewModel
{
  public string first_name { get; set; }

  public object first_name_attributes
  {
    get
    {
      return string.IsNullOrEmpty(first_name) ? null : new { @readonly = "readonly" };
    }
  }
}
在UI中,您可以声明性地添加对象

Html.TextBoxFor(x => x.first_name, first_name_attributes)

这将产生一个更简单的UI,视图模型的优点是可以进行单元测试

它不是编译(缺少括号)还是有单独的问题?发生了什么?虽然这会起作用,但请不要在视图中放置类似的
if
块。让您的视图模型为您完成工作会更有表现力。@jarrett那么您的解决方案是什么呢?@JarrettMeyer感谢您的反馈。我同意你的看法。我只是想告诉用户1348351如何修复他的代码。