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

asp.net-mvc – EditorFor忽略tabindex.你如何设置tabindex?

发布时间:2020-12-16 09:59:40 所属栏目:asp.Net 来源:网络整理
导读:tabindex的使用似乎只适用于像Textboxfor这样的htmlhelpers,而不适用于EditorFor 例如; %: Html.TextBoxFor(model = Model.MyItem,new { @tabindex = "3" })% 生成tabindex值. 但是,如果你使用; %: Html.EditorFor(model = Model.MyItem,new { @tabindex = "
tabindex的使用似乎只适用于像Textboxfor这样的htmlhelpers,而不适用于EditorFor

例如;

<%: Html.TextBoxFor(model => Model.MyItem,new { @tabindex = "3" })%>

生成tabindex值.

但是,如果你使用;

<%: Html.EditorFor(model => Model.MyItem,new { @tabindex = "3" })%>

然后结果是控件按预期创建,但缺少tabindex.

那么……如何为给定的EditorFor控件设置tabindex呢?

解决方法

我遇到的主要问题是我需要创建一个EditorFor类型机制,以便像货币一样格式化十进制(我们的系统有多种货币,因此“C”不合适),获得一个标签索引工作并允许系统维护标准验证.

我已成功使用以下方法实现了这一目标.通过创建自己的自定义编辑器控件.

在项目的Views / Shared / EditorTemplates目录中创建一个文件(我的名字叫decimal.ascx).

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<decimal?>" %>
 <% int intTabindex = 0;
   decimal myVal = 0;

   string strModelValue = "";
   if (Model != null)
   {
       myVal = (decimal)Model;
       strModelValue = myVal.ToString("#.00");
   }
   else
       strModelValue = "";



   if (ViewData["tabindex"] != null)
   {
       intTabindex = (int)ViewData["tabindex"];
   }
 %>
 <%: Html.TextBox("",strModelValue,new { @tabindex = intTabindex })%>

从本质上讲,这段代码只是覆盖了通常在“十进制”的EditorFor方法中使用;

<%: Html.TextBox("",Model.ToString("#.00"),new { @tabindex = intTabindex }) %>

模板.

我的调用代码现在读取;

<%: Html.EditorFor(model => Model.MyItem,new { tabindex = 5 })%>

结果是页面上的以下代码.

<input id="Model_MyItem" name="Model.MyItem" tabindex="5" type="text" value="12.33" />

这正是我所要求的.

虽然这仅适用于我的特定情况,但我鼓励任何想要解决此问题的人首先尝试自定义控件,因为它可能会为您节省大量时间.

如果在代码中当然可以创建所需的特定类型的控件并调整结果.

例如;我们可以简单地在调用中添加另一个项目来确定文本格式.

new {tabindex = 12,numberformat=2}

然后只需为所有格式创建一个处理程序.

(编辑:李大同)

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

    推荐文章
      热点阅读