如何在MVC5中的1个文本框中组合2个文本框数据

时间:2015-03-19 23:49:50

标签: c# asp.net-mvc asp.net-mvc-5

我有一个MVC5项目,我将名字和姓氏作为2个单独的文本框。我需要将这两个和节目组合成一个文本框作为客户名称我该怎么做?

这就是我现在所显示的2个文本框:

  <div class="form-group">
        @Html.LabelFor(model => model.First_Name, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.TextBoxFor(model => model.First_Name, new{disabled = "disabled" })
            @Html.ValidationMessageFor(model => model.First_Name)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Last_Name, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.TextBoxFor(model => model.Last_Name, new{disabled = "disabled" })
            @Html.ValidationMessageFor(model => model.Last_Name)
        </div>
    </div>

1 个答案:

答案 0 :(得分:3)

如果字段真正组合,那么您可以在模型中添加一个属性来表示新的单个字段:

public string CustomerName { get; set; }

并在您的视图中使用它:

@Html.TextBoxFor(model => model.CustomerName, new{disabled = "disabled" })
@Html.ValidationMessageFor(model => model.CustomerName)

(虽然如果在保存回服务器时,你需要将值解析回两个单独的字段,那么这可能会变得棘手。不要做太多assumptions about names。但是如果你必须那么解析应该可能发生在这个属性的setter中,getter应该动态显示连接值,如下所示。)

另一方面,如果它应该是组合值的只读显示,那么您需要创建一个只读属性来查看其他值:

public string CustomerName
{
    get { return string.Format("{0} {1}", First_Name, Last_Name); }
}

您只需在视图中显示它:

@Html.DisplayFor(model => model.CustomerName)

或直接绑定到您自己的标记中的值:

<span>@Model.CustomerName</span>

(在这种方法中,您可能还会编写一些JavaScript来更新客户端显示的值,因为其他字段中的值会发生变化。)

这实际上取决于您对此字段的处理方式,如果它保存回模型或仅用于显示目的。