Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何基于mvc视图模型对象以编程方式创建文本框?_.net_Asp.net Mvc_Textbox_Data Annotations - Fatal编程技术网

.net 如何基于mvc视图模型对象以编程方式创建文本框?

.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

是否有一种基于视图模型对象以编程方式创建文本框的方法?让我详细说明一下。例如,一个标准的ViewModel对象,比如password

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">