MVC5下拉列表用于获取要在模型中列出的值

时间:2014-03-20 17:46:17

标签: asp.net-mvc razor asp.net-mvc-5 html.dropdownlistfor

我有一个客户模型,其中我有一个客户类型和编号的另一个类的列表。在我看来,我使用模型将值传回控制器。

public class Arama
    {
      public List<MusteriTip> musteriler = new List<MusteriTip>();
}
public class MusteriTip
{
     public string musteriTip{get; set;}
     public int    musteriSayi{get; set;}
}

我的观点是(数字(sayi)将从下拉列表中选择,类型(提示)是下拉列表的ID):

<li>
  <span class="ttl"><asp:literal runat="server" />Yetiskin</span>
   <div class="smll2-select">
   @Html.DropDownListFor(m => m.MusteriTip, new SelectList(new int[] { 0, 1, 2, 3, 4 }, 1), new { tabindex = "1", id = "passadt" })
   </div></li>

在我看来,用户将使用下拉列表来选择客户数量。我希望能够从dropdownlistfor获取值并将值输入到我的模型中。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

您不能单独使用DropDownListFor发布可用值集。

但是,您可以将其与HiddenFor结合使用。

根据发布的视图部分,我假设视图的模型为Arama,而Arama实际上是这样的:

public class Arama
{
    public List<MusteriTip> musteriler { get; set; }

    public MusteriTip MusteriTip { get; set; }
}

然后你的观点可以做到这一点:

@model Arama

<div class="smll2-select">
    @Html.DropDownListFor(m => m.MusteriTip.musteriSayi, new SelectList(Model.musteriler, "musteriSayi", "musteriTip"), new { tabindex = "1", id = "passadt" })
    @for (int i = 0; i < Model.musteriler.Count; ++i)
     {
        @Html.HiddenFor(m => m.musteriler[i].musteriTip)
        @Html.HiddenFor(m => m.musteriler[i].musteriSayi)
     }
</div>

这假设您最初填充模型中的musteriler列表。

但是,要非常谨慎地依赖绑定到模型的可用值列表,因为可能存在安全漏洞(例如,重叠,请参阅Think Before You Bind)。例如。有人可以轻松发布不在列表中的值。

注意: 使用此方法,{®1}将在发布表单时绑定,但Arama.MusteriTip.musteriSayi将为Arama.MusteriTip.musteriTip。因此,您的控制器需要将其处理基于null。如果您希望Arama.MusteriTip.musteriSayi完全绑定,则需要查看实现自定义模型绑定器。