1

テーブルに Name 、 Family という 2 つのフィールドがあります。これらのアイテムの両方を 1 つのエディターで挿入したいと考えています。asp.net webforms では、次のように挿入します。

sqlcommand1.parameters.addwithvalue("フィールド", txtName.text + txtFamily.text);

私は MVC でこれを行います:

@Html.EditorFor((model => model.Name) && (model => model.Family))

今、私はこれを行う方法を知りたいですか?

4

2 に答える 2

3

モデルに別のプロパティ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)
于 2012-07-04T09:54:37.953 に答える
0

「テンプレートは、フィールド アクセス、プロパティ アクセス、単一次元配列インデックス、または単一パラメーターのカスタム インデクサー式でのみ使用できます」というエラー メッセージをおそらく見たことがあるでしょう。

EditorFor の考え方は、既存の値を取得し、変更をモデルにバインドし直すというものです。したがって、2 つのプロパティにバインドしようとしても意味がありません。テキストを分割する方法をどのように知るのでしょうか?

独自のエディター テンプレートを作成した場合、または作成したい場合は、別のプロパティまたはモデルを用意する必要はありません。インターフェースをエディターの基礎として使用できます。したがって、たとえば INameAndFamily という名前のインターフェイスを作成し、そのインターフェイスに基づくオブジェクトには Name プロパティと Family プロパティが必要であると言う場合、そのインターフェイスを期待する Editor を定義できます。

エディターについてより具体的に知りたい場合は、より詳細な回答を提供できると思います。

于 2012-07-04T09:49:54.287 に答える