gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:22:23 24 4
gpt4 key购买 nike

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}

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

关于asp.net-mvc - EditorFor 忽略 tabindex。你如何设置tabindex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5028352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com