我是MVC5的初学者,随时随地学习。我有一个下拉列表,其值绑定到数据库中的视图,如下所示:
如何将下拉列表中所选项目的值以及相应的文本值传递给数据库?一个简单的例子就可以了。
这是问题的更新。我已经包含了我的代码
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; }
}
我试图将选择项从下拉列表(即问题)及其相应的文本框值(即答案)发回模型。
答案 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基础知识会更好。