.net 如何基于mvc视图模型对象以编程方式创建文本框?
是否有一种基于视图模型对象以编程方式创建文本框的方法?让我详细说明一下。例如,一个标准的ViewModel对象,比如password.net 如何基于mvc视图模型对象以编程方式创建文本框?,.net,asp.net-mvc,textbox,data-annotations,.net,Asp.net Mvc,Textbox,Data Annotations,是否有一种基于视图模型对象以编程方式创建文本框的方法?让我详细说明一下。例如,一个标准的ViewModel对象,比如password public class PassWordViewModel { [DataType(DataType.Password)] [MaxLength(10)] public string Password { get; set; } } 现在以编程方式构建的textbox控件为例: TextBox textBox = new TextBox
public class PassWordViewModel
{
[DataType(DataType.Password)]
[MaxLength(10)]
public string Password { get; set; }
}
现在以编程方式构建的textbox控件为例:
TextBox textBox = new TextBox();
textBox.TextMode = TextBoxMode.Password;
textBox.MaxLength = 10;
如何以编程方式创建包含模型对象上设置的所有属性的文本框
TextBox textBox = [CREATE TEXTBOX FROM MY PASSWORD
VIEWMODEL OBJECT CONTAINING ALL THE DATA ANNOTATED
PROPERTIES]
不得不这样做是不寻常的,但还是有可能的 首先需要在控制器中创建
HtmlHelper
的实例:
var viewContext = new ViewContext(ControllerContext, new NullObjectView(), ViewData, TempData, TextWriter.Null);
var helper = new HtmlHelper<PassWordViewModel>(viewContext, new ViewPage());
然后使用System.Web.Mvc.Html.InputExtensions.TextBoxFor()创建文本框。
:
这将返回一个MvcHtmlString
,其中将包含以下内容的完整文本框输出:
<input data-val="true" data-val-maxlength="The field Password must be a string or array type with a maximum length of '10'." data-val-maxlength-max="10" id="Password" name="Password" value="" type="text">
不确定你在问什么。您已经以编程方式设置了属性(也就是通过注释)。您是否在询问如何渲染-例如@Html.PasswordFor
?谢谢,这将对我所处的奇怪场景有很大帮助!您的解决方案非常有效!谢谢你抽出时间帮忙。
var textbox = InputExtensions.TextBoxFor(helper, x => x.Password);
<input data-val="true" data-val-maxlength="The field Password must be a string or array type with a maximum length of '10'." data-val-maxlength-max="10" id="Password" name="Password" value="" type="text">