2012-03-04 17 views
2

質問に回答を追加するための作成ビューがあります。現在、ユーザーは送信ボタンをクリックすると同時に1つの回答しか追加できませんこの私は、ユーザが複数の回答オブジェクトを同じビューに挿入できるようにしておき、ユーザが送信ボタンをクリックした後にこれらの新しい回答オブジェクトをすべてデータベースに追加すると、現在のビューは次のようになります。フォーム内に複数のオブジェクトを追加して追加する方法

@model Elearning.Models.Answer 
@{ 
    ViewBag.Title = "Create"; 
} 
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
<div id = "remove"> 
@using (Ajax.BeginForm("Create", "Answer", new AjaxOptions 
{ 
    HttpMethod = "Post", 
    InsertionMode = InsertionMode.Replace, 
    UpdateTargetId = "remove" 
})) 

{ 
    <div id = "returnedquestion"> 
    @Html.ValidationSummary(true) 

    <fieldset> 
     <legend>Answer</legend> 
     <div class="editor-label"> 
      @Html.LabelFor(model => model.Description) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Description) 
      @Html.ValidationMessageFor(model => model.Description) 
     </div> 

    </fieldset> 
    <input type= "hidden" name = "questionid" value = @ViewBag.questionid> 
    <input type= "hidden" name = "assessmentid" value = @ViewBag.assessmentid> 
    <input type="submit" value="Add answer" /> 
</div> 
} 
</div> 

および方法は以下のように見えるアクション: -

public ActionResult Create(int questionid)//, int assessmentid) 
{ 
    ViewBag.questionid = questionid; 
    Answer answer = new Answer(); 
       return PartialView("_answer",answer); 
} 

// 
// POST: /Answer/Create 

[HttpPost] 
public ActionResult Create(int questionid, Answer a) 
{ 
    if (ModelState.IsValid) 
    { 

     repository.AddAnswer(a); 
     repository.Save(); 
     return PartialView("_details",a); 
    } 
    return View(a);} 

私は上記のコードを変更して複数の回答オブジェクトを同じビューに挿入して、ユーザーが送信ボタンをクリックすると同時にこれらの回答オブジェクトを送信できるようにするにはどうすればよいですか?

+0

こんにちは。私はあなたの答えを読んだので、私は現在の問題に答えてサーフィンしています。元の質問と同様に、私はテーブルに格納されている複数のオブジェクトを提出するつもりですが、私は1つのフォームしか提出できないようです。そのようにして、複数のオブジェクトの情報を含む1つのフォームを送信してデータベースに保存する方法を探しています。私はここに私の質問を提示しているhttps://stackoverflow.com/questions/47067465/core-submit-multiple-forms-and-save-each-one-of-themしかし、私は答えが見つかりましたここに。私の質問にコメントがあれば、私に1つ与えてください。 –

答えて

1

試してみてください ユーザーが「回答を追加」をクリックしたときにjavascriptによる入力を追加します。 してフォームを送信したとき、私はこれは何だと思いフォーム

enter image description here

+0

お返事ありがとうございます - 私はQuestionViewModelではなく、AnswerViewModelを作成することを意味すると思います。しかし、このように私は3つの答えだけを挿入するようにユーザーを制限しています。たとえば、4つの回答を挿入したい場合や2つの回答しか挿入しない場合はどうなりますか?私がviewModel.Questions.AddのようにオブジェクトのIDを設定している場合、2番目のことはうまくいかないと思う。新しいQuestion(){Id = 1}); –

+0

回答の数は、この質問を受ける際にいくつの質問があるかによって異なります。 IDをデータベースの – Mason

+0

mmmにマッピングするだけのIDを設定する。私はあなたの質問を誤解していると思う。あなたの答えはリストオブジェクトですか? – Mason

1

を送信すると、それは

<script> 
$(document).ready(function() { 
    var anwserCount = 1; 
    $("#addbutton").click(function() { 
     $("#AnwsersDiv") 
     .append("<input type='text' name='Anwsers[" + anwserCount + "]'/>"); 
     anwserCount += 1; 
    }); 
}); 
</script> 

@using (Html.BeginForm()) 
{ 
<div id="AnwsersDiv"> 
    <input type="text" name="Anwsers[0]" /> 
</div> 
<input id="addbutton" type="button" value="Add answer" /> 
<input type="submit" value="submit" /> 
} 

モデル

public class Answer 
{ 
    public List<String> Anwsers { get; set; } 
} 

の一覧を表示するために結合する全ての解答データを掲載しますあなたは探しています

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

結論:あなたはICollection<Answer>パラメータでPOSTアクションをしなければならないが、1つだけが提出するとそれらをすべて保存し、あなたのメインフォームを投稿し、適切な質問オブジェクトを作成するときにそれらを得ることは容易になります。

関連する問題