我使用Razor创建了一个文本框,并尝试设置value如下.
@Html.TextBoxFor(model => model.Destination, new { id = "txtPlace", value= "3" })
Run Code Online (Sandbox Code Playgroud)
我曾尝试追加value与@
@Html.TextBoxFor(model=> model.Destination, new { id = "txtPlace", @value= "3" })
Run Code Online (Sandbox Code Playgroud)
即使它将html input标记呈现为空value
<input id="txtPlace" name="Destination" type="text" value
class="ui-input-text ui-body-c ui-corner-all ui-shadow-inset ui-mini" >
Run Code Online (Sandbox Code Playgroud)
怎么了?
我有两种不同的方法来使用DISABLED TextBoxFor,它是:
@Html.TextBoxFor(u => u.Visibilidade, new { disabled = "disabled", @readonly = "readonly" })
Run Code Online (Sandbox Code Playgroud)
和
@Html.TextBoxFor(u => u.Visibilidade, new { disabled = "disabled" })
Run Code Online (Sandbox Code Playgroud)
即.使用或不使用readonly属性
考虑到禁用字段不会以任何方式更改,有什么区别?
提前致谢
我正在尝试使用Html.TextBoxFor在我的项目中设置TextBox控件.
但是,它似乎只有方法签名:
Lambda表达式和值:
<%= Html.TextBoxFor(t => t.ProjectDetails.Title, Model.ProjectDetails.Title)%>
Run Code Online (Sandbox Code Playgroud)
要么
Lambda表达式和HtmlAttributes:
<%= Html.TextBoxFor(t => t.ProjectDetails.Title, new { maxlength = 10})%>
Run Code Online (Sandbox Code Playgroud)
这不是样式的问题,因为控件ID已知:ProjectDetails_Title和样式表可以使用.但是,maxlength不能通过CSS设置,因为它是一种行为.
我知道您可以使用Html.Textbox指定所有三个,但我想利用Html.TextBoxFor的额外功能.
关于如何为使用Html.TextBoxFor渲染的控件设置值和最大长度的任何想法?
感谢您的帮助!
这只是为了好奇
为什么这段代码有效:
Html.TextBoxFor(x => x.Age, new { @Value = "0"})
Run Code Online (Sandbox Code Playgroud)
这不是:
Html.TextBoxFor(x => x.Age, new { @value = "0"})
Run Code Online (Sandbox Code Playgroud)
注意大写的'V' @Value
我知道这value是一个关键字,但readonly它也是如此.没有必要使用@Readonly(大写'R').
有人有线索吗?
我想手动为文本框定义id和名称:
<%: Html.TextBoxFor(model => model.Name, new { @id = "txt1", @name = "txt1" })%>
Run Code Online (Sandbox Code Playgroud)
但只有id被更改,而不是name属性,为什么?
<input id="txt1" name="Name" type="text" value="">
Run Code Online (Sandbox Code Playgroud)
谢谢!
我最近开始使用viewModel.这是我正在使用的viewModel:
public class ContentViewModel
{
public Content Content { get; set; }
public bool UseRowKey {
get {
return Content.PartitionKey.Substring(2, 2) == "05" ||
Content.PartitionKey.Substring(2, 2) == "06";
}
}
public string TempRowKey { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我改变了我的剃刀观点:
@model WebUx.Content
<div class="colx2-left">
<label for="complex-fr-url" class="required">Order</label>
@Html.TextBoxFor(model => model.Order)
</div>
Run Code Online (Sandbox Code Playgroud)
至:
@model WebUx.Areas.Admin.ViewModels.Contents.ContentViewModel
<div class="colx2-left">
<label for="complex-fr-url" class="required">Order</label>
@Html.TextBoxFor(model => model.Content.Order)
</div>
Run Code Online (Sandbox Code Playgroud)
现在我的观点失败了,显示以下消息:
编译器错误消息:CS0411:方法System.Web.Mvc.Html.InputExtensions.TextBoxFor TModel,TProperty>的类型参数(System.Web.Mvc.HtmlHelper <TModel>,System.Linq.Expressions.Expression <System.Func < TModel,TProperty >>)无法从使用中推断出来.尝试显式指定类型参数.
有人可以给我一些关于我该做什么的建议吗?
我想要小数点后只有 2 位数字。
@Html.TextBoxFor(m => m.Viewers, new { @tabindex = 7 })
Run Code Online (Sandbox Code Playgroud)
需要这样的输出:
56.23
456.20
1.21
像那样..
我的视图模型:
public partial class FileTransferFilterCriteriaViewModel
{
public string Fice { get; set; }
public string SourceEmail { get; set; }
public string TargetEmail { get; set; }
public DateTime FromDate { get; set; }
public DateTime ToDate { get; set; }
public string Status { get; set; }
public string Category { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
(没有任何东西来自数据库.)
我的控制器:
return View(new FileTransferFilterCriteriaViewModel())
Run Code Online (Sandbox Code Playgroud)
这里是被显示为两个FromDate和ToDate:
1/1/0001 12:00:00 AM
Run Code Online (Sandbox Code Playgroud)
我的HTML:
@Html.TextBoxFor(x =>x.Criteria.FromDate)
Run Code Online (Sandbox Code Playgroud)
问题:
null,我如何禁止显示默认日期值?null,我该如何格式化日期 …我有一个由表单和文本框组成的视图.如何在字符串和int值的每个框中设置默认值?
我希望页面加载每个框的值,所以我不需要键入值.
我无法改变模型中的任何内容.
@model MyDb.Production.ProductionMaterial
@{
ViewBag.Title = "CreateMaterial";
}
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>ProductionOrderMaterial</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Position)
</div>
<div class="editor-field"> //something like
@Html.TextBoxFor(model => model.Position, Or 5 )
@Html.ValidationMessageFor(model => model.Position)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ArticleId)
</div>
<div class="editor-field"> //something like
@Html.TextBoxFor(model => model.ArticleId. Or "")
@Html.ValidationMessageFor(model => model.ArticleId)
</div>
}
Run Code Online (Sandbox Code Playgroud) 我想以格式MM/dd/yy在文本字段中显示日期.我将模型类描述为:
public class VacancyFormViewModel
{
public int? ID { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yy}")]
public DateTime SurgeryDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
当然,我可以用EditorFor而不是TextBoxFor:
@Html.EditorFor(p => p.SurgeryDate, new { @class = "form-control" })
Run Code Online (Sandbox Code Playgroud)
问题是css样式,客户想要应用bootstrap样式,这些样式被破坏:

如果我设置TextBoxFor而不是EditorFor我得到日期与时间:
@Html.TextBoxFor(p => p.SurgeryDate, new { @class = "form-control" })
Run Code Online (Sandbox Code Playgroud)

有什么方法可以解决我的问题?或者为时间或第三种方式应用样式EditorFor或显示样式TextBoxFor?
在asp.net mvc 3中预填充Html.TextBoxFor的问题中,您可以看到以下代码正常工作的答案.
ViewBag.CompName = "Some Name";
Run Code Online (Sandbox Code Playgroud)
然后在你看来:
@Html.TextBoxFor(model =>model.Comps.CompName, new {@Value = ViewBag.CompName})
Run Code Online (Sandbox Code Playgroud)
但是,当文本框获取空字符串""的初始值时,它似乎为此文本框发布了null值.
ViewBag.CompName = "";
Run Code Online (Sandbox Code Playgroud)
这将发送空值而不是空字符串.
有没有办法返回空字符串而不是null?
在Site.css中有以下类:
input[type="textbox"].TextBoxAsLabel {
background:#f2f3f3 !IMPORTANT;
}
Run Code Online (Sandbox Code Playgroud)
想要覆盖Edit.cshtml中TextBoxFor字段的默认背景
@Html.TextBoxFor(model => model.ClientNumber, new {@readonly = "readonly", @class = "TextBoxAsLabel"})
Run Code Online (Sandbox Code Playgroud)
它仍然使用默认的白色背景.我应该改变什么?