加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – MVC Razor – 在一年中的12个月中使用@ Html.D

发布时间:2020-12-16 07:36:12 所属栏目:asp.Net 来源:网络整理
导读:我对MVC中的 HTML帮助扩展很新,更不用说在Razor中了,我正在寻找一种简单,整洁的方式来显示一年中12个月的下拉列表,其值为数字和文本日期的“MMM”表示. 所以最后的HTML应该是这样的: select option value="1"Jan/option option value="2"Feb/option option
我对MVC中的 HTML帮助扩展很新,更不用说在Razor中了,我正在寻找一种简单,整洁的方式来显示一年中12个月的下拉列表,其值为数字和文本日期的“MMM”表示.

所以最后的HTML应该是这样的:

<select>
  <option value="1">Jan</option>
  <option value="2">Feb</option>
  <option value="3">Mar</option>
  <!-- etc -->
</select>

是否可以在视图中完全执行此操作?我需要一个用户@ Html.DropDownListFor()的答案,所以我可以利用自动模型绑定.我接近下面的代码行,但它没有明确的值.

@Html.DropDownListFor(model => Model.DobMonth,new SelectList(Enumerable.Range(1,12).Select(r => new DateTime(2000,r,1).ToString("MMM"))),"- -")

出于非技术原因,我不能使用jQuery datepicker.

解决方法

你几乎就在那里,问题是如果你在创建SelectList时没有提供dataValue和dataText参数,它只会在项目上调用ToString并将它们用作选项的文本.

你需要的是从你的选择中返回文本,值对:

@Html.DropDownListFor(model => Model.DobMonth,new SelectList(
        Enumerable.Range(1,12)
            .Select(r => new
                             {
                                Text = new DateTime(2000,1).ToString("MMM"),Value = r.ToString()
                             }),"Value","Text",Model.DobMonth))

如果您想要一个“空”项,您需要手动添加它:

@Html.DropDownListFor(model => Model.DobMonth,new SelectList(
        new [] { new { Text = "- -",Value = (string)null } }.Concat(
        Enumerable.Range(1,Value = r.ToString()
                             })),Model.DobMonth))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读