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>