我在确定如何在HTML.DropDownList中返回所选项目时遇到一些困难,以便在点击提交按钮时,将在我的数据库中查找所选项目文本。这就是我所拥有的:
@{
var selectStaff = "Select LastName + ', ' + FirstName AS Name, StaffID From StaffList ORDER BY LastName";
var data = db.Query(selectStaff);
var items = data.Select(i => new SelectListItem {
Text = i.Name
});
}
然后在html ..
@Html.DropDownList("Select1", items)
这很好,因为我的下拉列表正在出现并填充,但是现在点击提交按钮,我希望能够在我的数据库中搜索所选项目的文本。我该怎么做呢?
答案 0 :(得分:1)
如果您没有将下拉列表绑定到视图模型上的属性(这可能更合适),您仍然可以在控制器操作中使用Request.Form["Select1"]
来获取它。
如果您希望在剃刀页面上仍然能够获取值,则需要使用jQuery(或其他javascript)来获取值。
使用jQuery获取值:
$(document).ready(function () {
$("#YourSubmitButtonID").click(function () {
// Get the value from 'Select1'
var value = $("#Select1").val();
});
});
要对值执行某些操作,您必须使用ajax函数,如下所示:
$.ajax({
url: '@Url.Action("ActionName", "ControllerName")',
data: { valueToQuery: $("#Select1").val() },
success: function (data) {
// The data is the result
}
});
在此示例中名为ControllerName的控制器上,您将拥有查询数据库并返回结果的代码。
public ActionResult ActionName(string valueToQuery)
{
// Do your stuff here
return Json("your result", , JsonRequestBehavior.AllowGet);
{
答案 1 :(得分:0)
我还发现THIS非常有趣,可以帮助你!
如果您不想使用Ajax或Json战术,也可以尝试以下步骤:
var sql = "SELECT ProductId, ProductName FROM Products";
var data = Database.Open("Northwind").Query(sql);
var items = data.Select(i => new SelectListItem {
Value = i.ProductId.ToString(),
Text = i.ProductName
});
@Html.DropDownList("productid", items)
另外:
var sql = "SELECT ProductId, ProductName FROM Products";
var data = Database.Open("Northwind").Query(sql);
<select name="productid">
@foreach(var row in data){
<option value="@row.ProductId">@row.ProductName</option>
}
</select>