我的表中有 2 个字段:姓名、家庭。我想用一个编辑器插入这两个项目。在 asp.net 网络表单中,我们像这样插入它:
sqlcommand1.parameters.addwithvalue("字段", txtName.text + txtFamily.text);
我在 MVC 中这样做:
@Html.EditorFor((model => model.Name) && (model => model.Family))
现在我想知道我该怎么做?
我的表中有 2 个字段:姓名、家庭。我想用一个编辑器插入这两个项目。在 asp.net 网络表单中,我们像这样插入它:
sqlcommand1.parameters.addwithvalue("字段", txtName.text + txtFamily.text);
我在 MVC 中这样做:
@Html.EditorFor((model => model.Name) && (model => model.Family))
现在我想知道我该怎么做?
我会在您的模型中添加另一个属性FullName:
public string FullName
{
get { return Name + " " + Family; }
set
{
string[] names = value.Split(' ');
Name = names[0];
if (names.Length > 1) Family = string.Join(" ", names.Skip(1).ToArray());
}
}
然后你可以在视图中使用它:
@Html.TextBoxFor(model => model.FullName)
您可能已经看到了您会收到的错误消息,即“模板只能用于字段访问、属性访问、单维数组索引或单参数自定义索引器表达式。”
EditorFor 的想法是获取现有值并将更改绑定回模型。因此,您尝试绑定回两个属性是没有意义的。它怎么知道如何分割文本?
如果您已创建或想要创建自己的编辑器模板,则不必拥有单独的属性或模型。您可以使用接口作为编辑器的基础。因此,如果创建一个名为 INameAndFamily 的接口,并说基于该接口的对象需要 Name 和 Family 属性,您可以定义一个需要该接口的编辑器。
如果您想更具体地了解编辑器,我可能会提供更详细的答案。