如何将dropdownlist selecteditem及其相应的文本值绑定到数据库更新

时间:2015-09-03 03:10:58

标签: c# asp.net-mvc asp.net-mvc-5

我是MVC5的初学者,随时随地学习。我有一个下拉列表,其值绑定到数据库中的视图,如下所示:

enter image description here

如何将下拉列表中所选项目的值以及相应的文本值传递给数据库?一个简单的例子就可以了。

这是问题的更新。我已经包含了我的代码

myController的

[HttpGet]
    public ActionResult GetQuestions()
    {
        var getQuestions = service.GetListOfQuestions().ToList();
        ViewBag.questions_drpdwn = new SelectList(getQuestions, "Id", "Question");
        return View();
    }`

查看

@using (Html.BeginForm("ConfirmEmail", "CreateAccount", FormMethod.Post, new { @class = "form-horizontal", role = "form" })){
@Html.DropDownListFor(m => m.Id, (SelectList)ViewBag.questions_drpdwn,"-- Select a Question--")
 @Html.TextBoxFor(m=>m.Answer)
<div>
 <input type="submit" value="Submit" class="btn btn-default"/>
 </div>

}

模型

public class QuestionsViewModel
{
    public int Id { get; set; }     

    [Display(Name = "Question")]
    public string Question { get; set; }

    [Display(Name = "Answer")]
    public string Answer { get; set; }

    public string SelctedType { set; get; }
}

我试图将选择项从下拉列表(即问题)及其相应的文本框值(即答案)发回模型。

1 个答案:

答案 0 :(得分:1)

对于WebForms,下拉列表可以具有autopostback功能。

对于MVC,您需要使用javascript来检测下拉列表中的更改,并使用ajax将值回发到服务器。

以下是使用jquery进行回发的示例

$("#DropDown").bind('change', function () {
    var id = $("#DropDown option:selected").val();
    var text = $("#DropDown  option:selected").text();  

    $.ajax({
        url: '/ControllerName/MethodName?id=' + id + "&text=" + text,
        contentType: 'application/html; charset=utf-8',
        type: 'GET',
        dataType: 'html'
    }).success(function (result) {
        //Do something with the result
    })
});

如果您使用普通的HttpPost(提交表单),

[HttpPost]
public ActionResult ConfirmEmail(QuestionsViewModel model)
{
   if(ModelState.IsValid)
   {
      //Do something here
   }

   return View(model);
}

返回的模型将ID作为下拉列表的选定值,并将答案作为文本框的值。 Question和SelectedType将为null。

我认为如果你先了解更多MVC基础知识会更好。

Getting started with MVC5