html.dropdownlistfor 绑定,c# – @ Html.DropDownListFor基本用法

第1部分:解释魔法

你不是一个人. Lambdas MVC使编码变得很容易,但它们也使它看起来很神奇(由于抽象).

Looking at the first param of the DropDownListFor Method […] Do I understand correctly that the “m” represents the instance of the model class that was passed into the View?

是.

HTML助手在Razor中的Lambdas是简单而神奇的,因为他们正在采取一个捷径,而不是真正向你透露发生了什么.

首先,我们来看看@Html.我们知道@开始我们的剃刀语法,然后Html是魔术.实际上,Html是一个自动初始化并给你的一个HtmlHelper对象.更具体地说,它是一个HtmlHelper< TModel&gt ;.剃须刀HTML编辑器是聪明的,提前知道什么类型的TModel将基于你所说的这个视图的模型类型.这就是为什么你有这么多的智慧. 当你输入

@model IEnumerable

编辑器读取并作出假设,现在HTML Helper将是HtmlHelper< IEnumerable< BusinessLayer.Employee>>.当编译页面的时候,HTML助手实际上就是这种类型的(当然).

那么DropDownListFor还是其他的扩展方法呢?

看着DropDownListFor,我们可以看到它实际上是DropDownListFor< TModel,TProperty>.我们现在明白,TModel是我们观点的模型类型. DropDownListFor知道这一点,因为该方法是扩展HtmlHelper< TModel&gt ;.因此,DropDownListFor知道传入类型是视图顶部定义的任何类型. TProperty怎么样? TProperty是返回类型.这是您选择属性时指定的类型.该视图给出了HtmlHelper的模型类型,然后给出了DropDownListFor模型类型,现在你在一个lambda表达式中:(x => x.Property)你选择的属性然后为你选择类型;在这种情况下是一个字符串(Gender).

第2部分:你的问题

在不知道你想要达到的目标的情况下,很难回答你的问题.你有一个Employees的集合,你想为每个显示多个性别下拉框,然后保存?

在处理集合时,这有点更棘手,因为MVC不会很好地处理它们;根据您需要完成的任务,最好编写自己的解决方案.

我不喜欢单一视图在一个页面上收集一些东西的想法.考虑这个逻辑:

你的方式:

>获取员工的收集

给员工一个看法

有视图创建一个SelectListItem

循环并显示每个员工的SelectList

我的方式

>获取员工的收集

>给员工一个看法

>使视图循环遍历并将每个员工传递给另一个视图(部分)

>每个部分处理单个员工

使用MVC,尽量将事情分解成小而合逻辑的部分.意见应该是愚蠢的这意味着他们不应该做任何逻辑或思考.事情变得更容易这样,它确保你的意见不会成长为怪物.

示例解决方案走过

尝试这个:

在与您使用的视图相同的文件夹中创建一个名为_EmployeeGender.cshtml的新PartialView.

使用此代码

_EmployeeGender.cshtml

@model BusinessLayer.Employee

@{

var listItems = new List()

{

new SelectListItem {Text = "Male",Value = "F"}

};

@Html.DropDownListFor(m => m.Gender,string.Empty)

}

你原来的看法

@model IEnumerable

@{

ViewBag.Title = "Employees";

}

Employees

@foreach (var employee in Model)

{

Html.RenderPartial("_EmployeeGender",employee);

}

结果

现在我们来看看我们生成的HTML:

Male

Female

Male

Female

我们可以看到,现在有一个空白的选择,我们的下拉框被自动选择与雇员的值(我创建一个男性和一个女性员工).

请注意,id和name的HTML属性是一样的.如果你想提交一个具有这些值的表单,那么它将需要更多的工作.但这是一个合理的起点.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值