tabindex 的使用似乎只适用于像 Textboxfor 这样的 htmlhelpers 而不是 EditorFor
例如;
<%: Html.TextBoxFor(model => Model.MyItem, new { @tabindex = "3" })%>
Run Code Online (Sandbox Code Playgroud)
产生一个 tabindex 值。
但是,如果您使用;
<%: Html.EditorFor(model => Model.MyItem, new { @tabindex = "3" })%>
Run Code Online (Sandbox Code Playgroud)
那么结果就是控件按预期创建了,但是缺少tabindex。
那么......如何为给定的EditorFor控件设置tabindex?
这是一个非常简单的问题。
我有一个 Html.helper:
@Html.DisplayFor(modelItem => item.Text)
Run Code Online (Sandbox Code Playgroud)
如何将 item.Text 中的字符串减少到特定长度?我希望你可以SubString直接在 item.Text 上做一些事情。
如果你想知道我为什么想要这个,那是因为字符串很长,我只想在索引视图等中显示它的一部分。
我有一个ASP.NET MVC4项目,启用了HTML5语义标记.使用@Html.EditorFor(m => m.MyDateTimeField)输出时输入type="datetime".我希望能够停止EditorFor生成HTML5标记.我怎样才能做到这一点?
这只是Opera目前的一个问题,因为其他浏览器(据我所知)不支持type="datetime".我在该字段上有一个jQuery datepicker所以在Opera中我得到了jQuery datepicker和浏览器datepicker.
我可以使用以下任何
一种方法修复:a.使用js更改输入类型
b.使用Html.TextBoxFor(m => m.MyDateTimeField)
c.使用自定义编辑器模板
d.使用modernizr检测是否支持datetime,如果支持,则不要使用jQuery datapicker
我想要的解决方案是禁用HTML5生成HtmlHelper.EditorFor.我希望HtmlHelper.EditorFor功能与我在项目创建时没有勾选"html5 semandtic markup"复选框时的功能相同.
编辑:
经过一番搜索,我遇到了DataTypeAttribute我可以在我的模型字段上应用的强制它们作为输入type="text"而不是html5匹配.这是一个潜在的解决方案,但它不太理想.当然必须有一个开关来关闭html5 EditorFor(和等效的助手)?
更多信息:
我有两个项目.第一个是用"Html5语义标记"创建的,另一个没有.第一个使用时使用html5输入类型EditorFor,第二个不使用.我需要停止第一个项目的EditorFor行为方式是没有删除EditorFor.某处必须有设置?
asp.net-mvc html5 html-helper mvc-editor-templates asp.net-mvc-4
是否可以将声明性 html 帮助程序放在不同于应用程序 Web 项目的程序集中?
目前,我知道唯一可以放置声明性 html 帮助程序的地方是我的应用程序 Web 项目的文件夹“App_Code”中。
经过几个月的开发,我现在有很多这些声明性的 html 助手,我必须在所有项目中共享它的唯一一个解决方案是使用“复制粘贴驱动开发”的非常糟糕的做法。
还有其他方法吗?
聚苯乙烯
只是不要被什么是声明性 html 帮助程序的定义混淆,这里有一个代码示例,与扩展 System.Web.Mvc.Html 类型的 c# 扩展相比有所不同:
@using Microsoft.Web.Mvc.Html
@helper YesNoRadioButton(System.Web.Mvc.HtmlHelper html, string name, bool value, bool disable = false)
{
@html.RadioButton(name, true, value, id: name.Replace(".", "_") + "_Yes", disabled: disable) @:Oui
@html.RadioButton(name, false, !value, id: name.Replace(".", "_") + "_No", disabled: disable) @:Non
}
@helper YesNoRadioButton(System.Web.Mvc.HtmlHelper html, string name, bool? value, bool disable = false)
{
@html.RadioButton(name, true, value.HasValue && value.Value, id: name.Replace(".", …Run Code Online (Sandbox Code Playgroud) 我认为拥有一个扩展版本的EditorFor HTML帮助器非常有用,它可以自动为Knockout JS写出值数据绑定.
这将是客户端视图模型和服务器端视图模型相同的地方 - 我已经通过使用ko映射并通过AJAX获取viewmodel来自动生成客户端视图模型.
有没有其他人尝试这样的事情,或者是否有任何项目包括类似于我在这里的想法?
这样做的好处是,在重构时,不会有错过数据绑定值的危险.
我正在尝试扩展 Html.ActionLink,因为我想为共享组件(在本例中为模态)添加自定义元数据。
我的目标是进一步扩展 .Net MVC 中的 LinkExtensions 类,它将向 html 类属性添加一个值并添加一个自定义数据属性,结果如下:
<a href="/Controller/Action/id" class="show-in-modal style1 style2" data-title="Modal title">Link</a>
Run Code Online (Sandbox Code Playgroud)
帮助器看起来类似于 MVC 方法:
public static MvcHtmlString ModalLink(this HtmlHelper htmlHelper, string title, string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes)
{
// Add 'show-in-modal' class here
// Add 'data-title' attribute here
return htmlHelper.ActionLink(linkText, actionName, controllerName, routeValues, htmlAttributes);
}
@Html.ModalLink("Modal title", "Link", "action", "controller", new { id = "id" }, new { @class = "style1 style2" });
Run Code Online (Sandbox Code Playgroud)
我遇到的这个问题是我无法轻松修改 htmlAttributes 对象以添加我的类名和数据属性,这是有道理的,因为这是一个只读的匿名对象。
有没有一种方法可以轻松应用所需的值/元数据,而不必通过反射将所有内容分开并重新组合在一起?
我注意到 MVC …
ASP.NET 5 与System.Web.Mvc.Html.InputExtensionsASP.NET 4 中使用的等效项是什么?
请参阅下面的示例:
public static class CustomHelpers
{
// Submit Button Helper
public static MvcHtmlString SubmitButton(this HtmlHelper helper, string buttonText)
{
string str = "<input type=\"submit\" value=\"" + buttonText + "\" />";
return new MvcHtmlString(str);
}
// Readonly Strongly-Typed TextBox Helper
public static MvcHtmlString TextBoxFor<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression, bool isReadonly)
{
MvcHtmlString html = default(MvcHtmlString);
if (isReadonly)
{
html = System.Web.Mvc.Html.InputExtensions.TextBoxFor(htmlHelper,
expression, new { @class = "readOnly",
@readonly = "read-only" });
} …Run Code Online (Sandbox Code Playgroud) 我有一个视图模型:
public class RegisterModel
{
...
public bool Confirmation{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我在我的视图中使用复选框助手:
@model RegisterModel
......
@Html.CheckBoxFor(m => m.Confirmation)
Run Code Online (Sandbox Code Playgroud)
这个复选框 html 帮助器创建:
<input id="Confirmation" name="Confirmation" value="true" type="checkbox">
<input name="Confirmation" value="false" type="hidden">
Run Code Online (Sandbox Code Playgroud)
在控制器上
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
if (!ModelState.IsValid)
return View(model);
.....
}
Run Code Online (Sandbox Code Playgroud)
假设某些用户将输入值更改为“xxx”并发布。因此,模型无效,我们返回视图。之后,Html.CheckBoxFor给出这个错误:
从“System.String”类型到“System.Boolean”类型的参数转换失败。
内部异常:
System.FormatException:xxx 不是有效的布尔值
当我们返回 view 时:Model.Confirmationvalue 为false但Request["Confirmation"]value 为'xxx'。
此错误来自方法ValueProviderResult上的类ConvertSimpleType。我认为,它尝试将Request["Confirmation"]值转换为布尔值并且给出错误。
[SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "Conversion failure is …Run Code Online (Sandbox Code Playgroud) 我正在尝试用 razor 语法制作一个单选按钮列表,到目前为止我已经想出了这个
@foreach (var p in Model)
{
<div id="projectList" class="col-lg-5">
@Html.RadioButton("name", "1", false, new { onCLick = "ShowOption(this)", id = p.id.ToString() })
@Html.Label(p.id.ToString(), p.name)
</div>
}
Run Code Online (Sandbox Code Playgroud)
但标签不与单选按钮关联。
我有一个<%= Html.TextBoxFor(user => user.Name) %>它有标准宽度.
我该怎么做才能让文本框更宽广?
html-helper ×10
asp.net-mvc ×7
c# ×5
razor ×4
asp.net-core ×1
editorfor ×1
html ×1
html5 ×1
knockout.js ×1
tabindex ×1
tagbuilder ×1