1

我在弄清楚如何在我的 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)

这很好用,因为我的下拉列表正在出现并已填充,但现在点击提交按钮后,我希望能够在我的数据库中搜索所选项目的文本。我该怎么做呢?

4

2 回答 2

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);
{
于 2012-06-28T15:08:17.277 回答
0

我也发现很有趣,可以帮助你!

如果您不想使用 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>
于 2017-12-19T09:19:38.193 回答