如何以编程方式基于 mvc 视图模型对象创建文本框?
How to programmatically create textbox based on mvc view model object?
有没有办法以编程方式创建基于视图模型对象的文本框?让我详细说明。例如,一个标准的 ViewModel 对象,如 password.
public class PassWordViewModel
{
[DataType(DataType.Password)]
[MaxLength(10)]
public string Password { get; set; }
}
现在以编程方式构建的文本框控件为例:
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<PasswordViewModel>
的实例:
var viewContext = new ViewContext(ControllerContext, new NullObjectView(), ViewData, TempData, TextWriter.Null);
var helper = new HtmlHelper<PassWordViewModel>(viewContext, new ViewPage());
可以看到,里面有一个NullObjectView
class,如下:
public class NullObjectView : IView
{
public void Render(ViewContext viewContext, TextWriter writer)
{
}
}
然后使用 System.Web.Mvc.Html.InputExtensions.TextBoxFor()
:
创建文本框
var textbox = InputExtensions.TextBoxFor(helper, x => x.Password);
这个 returns 一个 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">
有没有办法以编程方式创建基于视图模型对象的文本框?让我详细说明。例如,一个标准的 ViewModel 对象,如 password.
public class PassWordViewModel
{
[DataType(DataType.Password)]
[MaxLength(10)]
public string Password { get; set; }
}
现在以编程方式构建的文本框控件为例:
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<PasswordViewModel>
的实例:
var viewContext = new ViewContext(ControllerContext, new NullObjectView(), ViewData, TempData, TextWriter.Null);
var helper = new HtmlHelper<PassWordViewModel>(viewContext, new ViewPage());
可以看到,里面有一个NullObjectView
class,如下:
public class NullObjectView : IView
{
public void Render(ViewContext viewContext, TextWriter writer)
{
}
}
然后使用 System.Web.Mvc.Html.InputExtensions.TextBoxFor()
:
var textbox = InputExtensions.TextBoxFor(helper, x => x.Password);
这个 returns 一个 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">