2014-09-01 27 views
0

我有這個觀點。除此之外,我想補充:onclick="javascript:SubmitClick(@Model.id, answer.Id);"來定義RadioButtons。如何添加onclick事件到剃刀視圖中的單選按鈕

@model WebApplication2.Models.Question 
<div> 
    @Html.HiddenFor(x => x.Id) 
    <h3> @Model.QuestionText </h3> 
    @foreach (var answer in Model.Answers) { 
     <p> 
      @Html.RadioButtonFor(b => b.SelectedAnswer, answer.Id) @answer.AnswerText 
     </p> 
    } 
</div> 

問題與答案是這樣的模型。

public class Question { 
     public int Id { set; get; } 
     public string QuestionText { set; get; } 
     public virtual ICollection<Answer> Answers { set; get; } 
     public string SelectedAnswer { set; get; } //this field is SET after clicking the radio button, I don't need this field ant this behaviour 

    } 
    public class Answer { 
     public int Id { set; get; } 
     public string AnswerText { set; get; } 
    } 

據我所知b => b.SelectedAnswer@Html.RadioButtonFor這種表達使得該點擊後場SelectedAnswerQuestion類將被設置。我不需要,我只需要在foreach循環中只有一個單選按鈕可以同時選中,點擊它們就會調用onclick="javascript:SubmitClick(@Model.id, answer.Id);"。也可以以過時的方式完成,只是爲了使其工作。

屏幕,這將有助於已瞭解視圖的外觀:

enter image description here

+1

爲什麼不把它放在表單元素中並回傳? 'SubmitClick'函數有什麼作用? – 2014-09-01 23:15:00

+0

@StephenMuecke回發重定向我做不同的行動?我發佈了一個適合我的答案。如果你知道更簡單的方法,請顯示。謝謝。 – Yoda 2014-09-01 23:21:59

+1

當然,如果你想。在你的post方法中,保存你的數據,然後'返回RedirectToAction(「SomeAction」);' – 2014-09-01 23:24:13

回答

0

的觀點:

@model WebApplication2.Models.Question 
<div> 
    @Html.HiddenFor(x => x.Id) 
    <h3> @Model.QuestionText </h3> 
    <form action=""> 
     @foreach (var answer in Model.Answers) { 
      <p> 
       <input type="radio" onclick="javascript:SubmitClick(@Model.Id, @answer.Id);">@answer.AnswerText<br> 

      </p> 
     } 
    </form> 
</div> 

腳本功能是強類型的視圖對Person

function SubmitClick(qid, aid) { 
     var url = '@Url.Action("SubmitSurvey", "Person")'; 

     $.post(url, { questionId: qid, answerId: aid, personId:@Model.Id }, function (data) { 
      alert('questionId: ' + qid + ' answerId ' + aid); 
     }); 
    } 

腳本調用的方法

public void SubmitSurvey(int questionId, int answerId, int personId) { 

      System.Diagnostics.Debug.WriteLine("UPDATING DATABASE " + "Selected personId: " + personId); 

     } 
相關問題