カスタム命名規則とASP.NET MVCでのバインド
-
20-09-2019 - |
質問
私はそれが私のコントローラにポストバックされた後、コンテンツを使って何をすべきかを示すために、私のテキストフィールドに命名-規則を使用ビューを持っています。
のフォーマットは同様です
<input type="text" name="RegistrationLine#ID" />
更新のための
作成のための<input type="text" name="CreateRegistrationLine#LineNumber" />
さて、通常のモデル結合することはできません。しかし、私は、件名に少しを読んで、それを解析して結合し、これらのフォーム要素を、正しくオブジェクトをインスタンス化を助けることができるはずカスタムモデルバインダーを、記述することが可能であることを示す指標のビットを見つけたてきました。
をお読みください:バインドformValue異なるのプロパティに名前、ASP.NET MVC の
これは、私が私がバインドしようとしていますformelement名で追加情報を持つ追加の複雑さを持っているものを除いて、私はやっていると少し似ています。
私ここに道オフベースのですか?そうでない場合は、あなたがたのうち、あなたがオフにこのモデルバインダーを起動する方法を示すために、数行のコードをドロップすることができます..
これは私が本当に達成しようとしていますものに非常に悪いアプローチであるならば、私はより良いアプローチのための提案を聞くのが大好きです。ただ、私は何をできるようにしたいことは、両方のアップデートをポストバックで、一度に作成することに注意します。
解決
私はちょっと@jfarと@omarに同意する必要があります。私はカスタムモデルバインダーは、このインスタンスになりたい場所ではないと思います。
あなたはあなたのビューに複合型を渡すと@jfar述べたように、単純に終止符を使用することができます。
id="Model.Person.Name.FirstName"
は喜んでそれにクラスを持っている人は、姓と呼ばれる性質を持っている名前を呼ばれ、指定されたオブジェクトにバインドされます。
今、あなたは、検証などを行うだろうパーシャルクラスを実装し、にModelStateエラーを取り込むことができます。
public partial class Name
{
public void Validate(){ }
public int CreateRegistrationLine(){ }
public bool DoSpecialActions(){ }
}
これはあなたの特別なアクションはので、上記の私の例は、あなたが望むものではないかもしれない何をしているかちょっと不明です。