私はSOとGoogleを1週間以上探してきましたが、まだ有効な答えを見つけることができませんでした. うまくいけば、誰かが私を助けることができます。
asp.net (Entity Framework + Razor) を使用してプロジェクトに取り組んでおり、ビューに 2 つのモデルを追加しようとしています。editorFor() を使用して、完全に表示されています。問題は、一部の部分が情報をコントローラーに渡していないことです。
この場合、すべての演習でいくつかの答えが得られました。これは私の運動モデルです:
Table("Exercise")]
public class ExerciseModel
{
[Key]
public int ExerciseId { get; set; }
[Required]
public string Question { get; set; }
[Required]
public List<AnswerModel> Answers { get; set; }
そして、これが回答モデルです:
[Table("Answer")]
public class AnswerModel
{
[Key]
public int AnswerId { get; set; }
[Required]
public string Answer { get; set; }
}
ビューは、演習部分 (作業部分) と回答部分の 2 つの部分から構成されます。エクササイズモデルのリストにさらに回答を追加したいと思います。私はさまざまな方法を試しました。エディター テンプレート、部分ビューなど。
これがビューです。Jquery を使用して、外出先で新しい質問を作成し、回答を追加できます。私が作成したいのは、エクササイズモデルのそのリストに回答を投稿できることです。
@using (Html.BeginForm("CreateQuestion", "Admin", FormMethod.Post))
{
@Html.ValidationSummary(true)
//will be changed
@Html.Partial("_PartialCreateExercise")
//this shows the answers form
<div style="display: none;" id="new">
<div class="editor-field">
@Html.EditorFor(m => m.Answers);
</div>
</div>
<p>
<input name="command" type="button" id="add" value="add new answers" />
</p>
<p>
<input name="command" type="submit" value="Create" />
</p>
}
これは機能しますが、ページを送信すると、(AnswerModel タイプの)exercisemodel のリストは空のままです。最後に、回答用のエディター テンプレート:
@model Academy.Models.AnswerModel
@{
Layout = null;
}
<h2>Answer</h2>
<p>
@Html.LabelFor(model => model.Answer)
@Html.EditorFor(model => model.Answer)
</p>
The jQuery:
$(document).ready(function () {
$("#add").click(function () {
$('#add').after($("#new").html());
$('#new').css("Display", "block");
});
});
あまり効果がなく、いろいろ試したので、ぐちゃぐちゃになりました。しかし、デバッグ モードを使用すると、ExerciseModel の List は空になり、AnswerModel も空になります。
繰り返しますが、問題は、フォームを投稿するときに、ExerciseModel の List が空のままであることです。何らかの理由で、エディター テンプレートを使用してエクササイズ モデルのリストにアクセスできません。(コントローラーは現在あまり機能しておらず、リストは常に空であるため、含まれていません)
これで一週間忙しくしています。誰か助けていただけませんか?