2012-03-04 69 views
2

我有一個創建視圖來添加問題的答案,目前用戶只能在點擊提交按鈕的同時添加一個答案,而是我希望用戶能夠將多個答案對象插入到同一視圖中,然後系統在用戶點擊提交按鈕後將所有這些新的答案對象添加到數據庫中,我的當前視圖如下所示: -如何在表單中添加多個對象內容添加值

@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

你好。自從我衝浪回答當前問題以來,我已經閱讀了您的答案。與原始問題類似,我希望提交存儲在表中的多個對象,但似乎我只能提交一個表單。通過這種方式,我正在尋找一種方式來提交一個包含多個對象信息的表單並將其保存到數據庫中。我已經提出了我的問題在這裏https://stackoverflow.com/questions/47067465/core-submit-multiple-forms-and-save-each-one-of-them但想要感謝你,因爲我相信我可能會找到答案這裏。如果你對我的問題有任何評論,請隨時給我一個。 – 2017-11-02 18:00:32

回答

1

嘗試發佈一個清單 當用戶單擊「添加答案」時,通過javascript添加輸入。 並提交表單的時候,一切都會回答數據發佈到綁定到列表

<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; } 
} 

當提交表單

enter image description here

+0

感謝您的答覆 - 我認爲你的意思是創建AnswerViewModel而不是QuestionViewModel-沒關係;但以這種方式,我限制用戶只插入3個答案,如果他想插入例如4個答案或只有2個答案。第二件事我不認爲它會工作,如果我設置對象的id爲viewModel.Questions.Add(新問題(){Id = 1}); – 2012-03-04 12:59:09

+0

答案的數量取決於得到這個問卷時有多少問題。設置ID只是映射數據庫中的問題 – Mason 2012-03-04 13:19:42

+0

嗯..我想我誤解你的問題。您的答案是列表對象? – Mason 2012-03-04 13:27:17