Asp.net mvc MVC5 DropDownList用于获取要在模型中列出的值

Asp.net mvc MVC5 DropDownList用于获取要在模型中列出的值,asp.net-mvc,razor,asp.net-mvc-5,html.dropdownlistfor,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

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

public class Arama
    {
      public List<MusteriTip> musteriler = new List<MusteriTip>();
}
public class MusteriTip
{
     public string musteriTip{get; set;}
     public int    musteriSayi{get; set;}
}
公共类阿拉玛
{
public List musteriler=new List();
}
公共类MusteriTip
{
公共字符串musteriTip{get;set;}
公共int musteriSayi{get;set;}
}
我的观点是(数字(sayi)将从下拉列表中选择,类型(tip)是下拉列表的id):

  • 叶提斯金 @DropDownListFor(m=>m.MusteriTip,new SelectList(new int[]{0,1,2,3,4},1),new{tabindex=“1”,id=“passadt”})

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

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

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

    根据您发布的视图部分,我假设视图的模型为
    Arama
    ,并且
    Arama
    实际上如下所示:

    public class Arama
    {
        public List<MusteriTip> musteriler { get; set; }
    
        public MusteriTip MusteriTip { get; set; }
    }
    
    公共类阿拉玛
    {
    公共列表集合器{get;set;}
    公共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>
    
    @model阿拉玛
    @DropDownListFor(m=>m.musterisip.musteriSayi,新的选择列表(Model.musteriler,“musteriSayi”,“musterisayp”),新的{tabindex=“1”,id=“passadt”})
    @对于(int i=0;im.musteriler[i].musteriTip)
    @Html.HiddenFor(m=>m.musteriler[i].musteriSayi)
    }
    
    这假设您最初在模型中填充
    musteriler
    列表

    但是,依赖绑定到模型的可用值列表时要非常谨慎,因为存在潜在的安全漏洞(例如,过度定价,请参阅)。例如,有人可以轻松发布列表中没有的值

    注:
    使用这种方法,
    Arama.MusteriTip.musteriSayi
    将在表单发布时绑定,但
    Arama.MusteriTip.MusteriTip
    将为
    null
    。因此,您的控制器需要将其处理基于
    Arama.MusteriTip.musteriSayi
    。如果您希望完全绑定
    Arama.MusteriTip
    ,则需要考虑实现自定义modelbinder。

    您可以从视图中包含代码吗?我已经包含了视图BTW,
    将被razor视图忽略。它将直接传递到浏览器,这将使您的html无效。
    @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>