我有一个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>
答案 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来更新客户端显示的值,因为其他字段中的值会发生变化。)
这实际上取决于您对此字段的处理方式,如果它保存回模型或仅用于显示目的。