Asp.net-Mvc

將單選按鈕中的選定值傳遞給 MVC 中的控制器

  • September 5, 2019

我正在嘗試將這個選定的單選按鈕值從剃刀視圖傳遞給控制器……有人可以告訴我如何做到這一點嗎?…… …..我的視圖如下所示:

@using (Html.BeginForm("Index", "Exam"))
{

   @Html.Hidden("qid", Model.ID, new { @id = "id" })
   <table>
       <tr>
           <td>
               @Model.ID
           </td>
           <td>
               @Model.QuestionDes
           </td>
       </tr>
       <tr>
           <td>
               <p>@Html.RadioButton("Answer1", new { @id = 1 })  @Model.Answer1 </p>
           </td>
       </tr>
       <tr>
           <td>
               <p>@Html.RadioButton("Answer2", new { @id = 2 })  @Model.Answer2 </p>
           </td>
       </tr>
       <tr>
           <td>
               <p>@Html.RadioButton("Answer3", new { @id = 3 })  @Model.Answer3 </p>
           </td>
       </tr>
       <tr>
           <td>
               <p>@Html.RadioButton("Answer4", new { @id = 4 })  @Model.Answer4 </p>
           </td>
       </tr>

   </table>

   <input type="submit" value="Next" />

}
@using (Html.BeginForm("PrevIndex", "Exam"))
{

   @Html.Hidden("qid1", Model.ID, new { @id = "id1" })
   <input value="Prev" type="submit" />
}

我的控制器看起來像這樣:…………

public class ExamController : Controller
   {
       [HttpGet]
       public ActionResult Index()
       {
           IQuestionService ser = new QuestionService();
           QuestionLoadDTO q = ser.GetIndividualQuestions(1);
           return View(q);
       }

       [HttpPost]
       public ActionResult Index(QuestionLoadDTO ques)
       {
           int count = 0;
           count = int.Parse(Request["qid"].ToString());
           count++;
           if (count <= 4)
           {
               IQuestionService ser = new QuestionService();
               QuestionLoadDTO q = ser.GetIndividualQuestions(count);
               return View(q);
           }
           return RedirectToAction("Submit");

       }
       public ActionResult PrevIndex(QuestionLoadDTO ques)
       {
           int count1 = 0;
           count1 = int.Parse(Request["qid1"].ToString());
           count1--;
           if (count1 < 5 || count1 >= 0)
           {
               IQuestionService ser = new QuestionService();
               QuestionLoadDTO q = ser.GetIndividualQuestions(count1);
               return View("Index", q);
           }
           return RedirectToAction("End");

       }
       public ActionResult Submit()
       {
           return View();
       }
       public ActionResult End()
       {
           return View();
       }




   }

這些是其他方法:

QuestionLoadDTO IQuestionService.GetIndividualQuestions(int index)
{
   IQuestionData ser = new QuestionRepository();           

   QuestionLoadDTO q = ser.GetIndividualQues(index);

   return q;
}
public QuestionLoadDTO GetIndividualQues(int index)
{
   Context con = new Context();
   Question question = con.Questions.Find(index);//Where(e => e.ID == index).FirstOrDefault();
   QuestionLoadDTO dto = new QuestionLoadDTO()
   {
       ID = question.ID,
       QuestionDes = question.QuestionDes,
       Answer1 = question.Answer1,
       Answer2 = question.Answer2,
       Answer3 = question.Answer3,
       Answer4 = question.Answer4

   };                                
   return dto;
}

謝謝!!!!

添加屬性:

public string SelectedAnswer { get; set; }

在視圖中添加:

@Html.RadioButtonFor(m => m.SelectedAnswer, "Answer1")
@Html.RadioButtonFor(m => m.SelectedAnswer, "Answer2")
@Html.RadioButtonFor(m => m.SelectedAnswer, "Answer3")
@Html.RadioButtonFor(m => m.SelectedAnswer, "Answer4")

在控制器中,它根據選定的單選按鈕回發值…即 Answer1 或 Answer2 等。

如果您為單選按鈕提供相同的名稱,那麼您可以嘗試以下程式碼

控制器

[HttpPost]
public ActionResult Index(string Answer)
{
   return View();
}

看法

@using (Html.BeginForm("Index", "Demo"))
{
      @Html.RadioButton("Answer", "A") <span>A</span> 
      @Html.RadioButton("Answer", "B") <span>B</span> 

   <input type="submit" value="Next" />
}

引用自:https://stackoverflow.com/questions/27700101