MVC Razor - 如何从下拉列表SQL更新所选列中的多行

时间:2016-01-20 17:23:35

标签: sql asp.net-mvc razor

我认为标题说明了一切...... 如果另一列的值等于所选值(来自另一个下拉列表),我想将输入填充值的整个表更新到选定列(从下拉列表中选择)。将所有这些放在一起对我来说似乎很难......

喜欢这种查询...

var db = Database.Open("DatabaseX"); var updateCommand = "UPDATE TableX Set SelectedColumn(dropdownlistA) = (InputA) IF ColumnX = Selected Values(dropdownlistB)";

抱歉我的英文

1 个答案:

答案 0 :(得分:0)

如果您无法从表单提交的下拉菜单中获取所选值,则可以尝试此操作。

创建一个视图模型,其中包含下拉列表和所选选项值的数据属性。

public class CreateUserVm
{
    public int SelectedCam { set; get; }
    public List<SelectListItem> Cams { set; get; }

    public int SelectedCat { set; get; }
    public List<SelectListItem> Categories { set; get; }
}

在你的GET动作中,创建一个对象,初始化集合属性并发送视图。

public ActionResult Create()
{
    var v = new CreateUserVm
    {
        Categories = new List<SelectListItem>
        {
            new SelectListItem {Value = "1", Text = "Photo"},
            new SelectListItem {Value = "2", Text = "Video"}
        },
        Cams = new List<SelectListItem>
        {
            new SelectListItem {Value = "25", Text = "DSLR"},
            new SelectListItem {Value = "28", Text = "Point and Shoot"}
        }
    };
    return View(v);
}

现在,您的创建视图应该强烈输入此CreateUserVm类。

@model CreateUserVm
@using(Html.BeginForm())
{
    @Html.DropDownListFor(g=>g.SelectedCat, Model.Categories)
    @Html.DropDownListFor(g=>g.SelectedCam, Model.Cams)
    <input type="submit" />
}

在您的HttpPost操作方法中,我们将使用CreateUserVm对象作为参数,以便通过默认的模型绑定器将发布的模型映射到它。

[HttpPost]
public ActionResult Create(CreateUserVm model)
{
  var camId = model.SelectedCam;
  var catId = model.SelectedCat;

  // use camId and catId to update your db.
  // to do  : Save and Redirect
}