私が昨日尋ねた質問に従って、私はより多くのテキスト ボックスを動的に作成し、それらをビューのモデルにマップする方法を見つけようとしていたので、サーバーに投稿すると、動的に (js) 生成されたすべてのテキスト ボックスを取得し、それを投稿します。リストなどのオブジェクトに。
この紛らわしい質問の例を挙げると:
「プライマリ連絡先」というラベルの付いたテキストボックスがあり、チケットの作成者は連絡先の名前と電話番号をこのボックスに入力できます。私が本質的にやりたいことは、これを 3 つのテキスト ボックスに切り替えることです。1 つのボックスではなく、名前、電子メール、および電話番号用に 1 つ。次に、別の連絡先をこの List コレクションに追加するために、さらに 3 つのボックスを動的に作成する JavaScript を作成します。次に、ユーザーがフォームを送信してチケットを変更または作成すると、モデル内のこのコレクションがコントローラーに渡されます。ただ、ペタポコだとちょっとややこしい。コントローラーをお見せしましょう:
[HttpPost]
public ActionResult ModifyTicket(Ticket model)
{
string userString = User.Identity.Name.Replace("ONHOLD\\", "");
if (ModelState.IsValid)
{
model.CreatedDate = DateTime.Now;
model.LastUpdateBy = Util.GetEmployeeIdByName(userString);
model.LastUpdate = DateTime.Now;
model.IsComplete = false;
model.ClientString = Util.GetClientNameById(model.ClientId);
model.LocationString = Util.GetLocationNameById(model.LocationId);
model.Update();
SuccessMessage = "You have successfully updated ticket number: " + model.TicketId + " for the following client: " + model.ClientString + ".";
return RedirectToAction("Index");
}
ErrorMessage = "Woops! Something went wrong, please check back in a few moments, if the problem persists please contact development.";
return RedirectToAction("Index");
}
これに対する簡単な答えは、この正確な理由から、データベース モデルに List オブジェクトが含まれるということです。しかし、私は PetaPoco を使用していますが、それがどのように行われるのか完全にはわかりません。データベース モデルに手動でコレクションを追加することはできますが、データベース スキーマの変更に基づいてモデルを再生成すると、ファイルに加えた変更がすべて失われます。
ビューが DataAnnotations を使用した検証に使用する部分クラスも使用しています。ただし、このクラスは、クライアント側の検証を提供する DataAnnotations を含むだけのデータベース モデルと同じです。
私が達成しようとしていることを誰かが理解している場合は、欠落している部分を明確にするために、より多くの情報を提供できれば幸いです. この問題を解決する確実な方法が見つからないため、これに対する解決策が必要です!