我有一个客户模型,其中我有一个客户类型和编号的另一个类的列表。在我看来,我使用模型将值传回控制器。
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获取值并将值输入到我的模型中。我怎么能这样做?
答案 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
完全绑定,则需要查看实现自定义模型绑定器。