RoomTypeレコードを作成しようとしています。各RoomTypeには、各言語の説明であるRoomTypeInfosのコレクションがあります。次に、各RoomTypeInfoは言語レコードに関連付けられます。MVC3を使用してポストアクション後にネストされたモデルが失われる
RoomTypeを作成するには、言語ごとに1つのRoomTypeInfoを使用してオブジェクトをプリロードします。
GETアクション:
//
// GET: /RoomType/Create/IdHotel
[HttpGet]
public ActionResult Create(int id)
{
List<Language> _Languages = __roomTypeRepository.GetLanguages().ToList<Language>();
RoomType roomType = new RoomType { IdHotel = id };
roomType.RoomTypeInfos = new System.Data.Linq.EntitySet<RoomTypeInfo>();
foreach (Language Language in _Languages)
{
roomType.RoomTypeInfos.Add(new RoomTypeInfo { Language = Language });
}
return View(roomType);
}
POSTアクション:
//
// POST: /RoomType/Create/
[HttpPost]
public ActionResult Create(RoomType roomType)
{
try
{
if (ModelState.IsValid)
{
__roomTypeRepository.InsertRoomType(roomType);
return RedirectToAction("Index", new { id = roomType.IdHotel });
}
else
{
return View(roomType);
}
}
catch
{
return View(roomType);
}
}
だから、モデルが有効ではないか、例外がキャッチされた後のアクションで、私はエラーを取得する場合は、@ Model.Language Languageがnullになったので、ビューの.Name。
@model DataAccess.RoomTypeInfo
@Html.HiddenFor(model => model.Id)
@Html.HiddenFor(model => model.IdRoomType)
@Html.HiddenFor(model => model.IdLanguage)
<fieldset>
<legend>@Model.Language.Name</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Descripcion)
</div>
<div class="editor-field">
@Html.TextAreaFor(model => model.Descripcion, new { Class = "wysiwyg" })
@Html.ValidationMessageFor(model => model.Descripcion)
</div>
</fieldset>
そしてRoomTypeエディタテンプレート:RoomTypeInfoエディタテンプレートの
コード
@model DataAccess.RoomType
@Html.HiddenFor(model => model.Id)
@Html.HiddenFor(model => model.IdHotel)
<h3>
Información Básica
</h3>
<div class="editor-field">
@Html.EditorFor(model => model.RoomTypeInfos)
@Html.ValidationMessageFor(model => model.RoomTypeInfos)
</div>
私は言語テーブルを照会し、各RoomTypeInfo.Languageに再びそれを設定することによって、それを固定したが、回避策のように感じる場合。
この場合のベストプラクティスは何ですか?
これらの異なるRoomTypeInfoビューをレンダリングするRoomTypeビューのcshtmlコードも投稿できますか? – danludwig
ルームタイプビューが追加されました。 – Smet1960