我有一个带有' kenmerken'的ViewBag。 :
while (reader.Read())
ViewBag.Kenmerken.Add(new SelectListItem {
value = reader.GetString(0),
Text = reader.GetString(0)
});
Reader.Close();
使用aps.net剃刀的表格:
@using (Html.BeginForm("KenmerkSelectie2", "KenmerkSelectie", FormMethod.Post, new { id = "kenmerk2" }))
{
@Html.DropDownList("Kenmerken", (SelectList)ViewBag.Kenmerken,
"-- Selecteer een kenmerk--",
new{
onchange = "document.getElementById('kenmerk2').submit();"
});
}
和httppost方法
[HttpPost]
public ActionResult KenmerkSelectie2(string value)
{
var foo = ViewBag.Kenmerk;
var foo2 = value;
var foo3 = ViewBag.Kenmerken;
return View();
}
每个foo都为null,如何获取所选值?
答案 0 :(得分:2)
您已经提供了字段Kenmerken
的名称,但您的HttpPost
方法需要一个名为value
的值,请更改其中任何一个匹配。
你应该认真考虑为此创建一个模型,例如:
public class MyViewModel
{
public string SelectedValue { get; set; }
public List<SelectListItem> Values { get; set; }
}
然后在您看来,您可以这样做:
@model MyViewModel
@Html.DropDownListFor(m => m.SelectedValue, Model.Values,
"-- Selecteer een kenmerk--", new{
onchange = "document.getElementById('kenmerk2').submit();"
})
此外,当您正在使用它时,请提取内联JavaScript。
答案 1 :(得分:0)
首发
Viewbag仅用于在控制器和视图之间传递数据
第二期
您需要在操作的参数中指定选择字段的名称。
[HttpPost]
public ActionResult KenmerkSelectie2(string Kenmerken)
{
var foo2 = Kenmerken;
return View();
}
答案 2 :(得分:0)
尝试:
[HttpPost]
public ActionResult KenmerkSelectie2(string kenmerken)
{
var foo3 = kenmerken;
return View();
}
但使用模型绑定是一个好主意:http://www.codeproject.com/Articles/551576/ASP-NET-MVC-Model-Binding-and-Data-Annotation
答案 3 :(得分:0)
试试:
这是您视图中的下拉列表:
@Html.DropDownList("Kenmerken", (SelectList)ViewBag.kenmerken)
然后使用Jquery脚本获取下拉列表的值并将其放入ActionResult帖子中
$(document).ready(function () {
$('Kenmerken').change(function(){
var value = $('Kenmerken').val();
var url = YourControllerName/KenmerkSelectie2
$.ajax({
url:url,
cache:false,
type:'POST',
data: {
MyDropDownValue : value
},
success: function()
{
}
})
});
});
和你的actionResult:
[HttpPost]
public ActionResult KenmerkSelectie2(string MyDropDownValue)
{
var foo4 = MyDropDownValue //here
var foo = ViewBag.Kenmerk;
var foo2 = value;
var foo3 = ViewBag.Kenmerken;
return View();
}