我有强类型的View,字符串类型属性的自定义模板,我应该更改值
// model
class Person
{
public string Name { get; set; }
}
// view
@model Person
<div>
@Html.EditorFor(m => m.Name)
</div
//custom template view
@model System.String
@Html.TextBox(string.Empty, Model.ToUpper())
但它不起作用 - 我得到旧的名字值,没有改变
新
我忘了重要的细节 - 名字属性从URL中的查询字符串中获取值 -
http://localhost:53494/?Name=blah
答案 0 :(得分:2)
TextBox
之类的Html帮助程序在绑定它们的值时总是首先查看modelstate,因为已经有一个来自请求字符串的值,它会忽略你传递给它的第二个参数。因此,要实现您正在寻找的内容,您可能需要先从模型状态中删除该值:
@model string
@{
ViewData.ModelState.Remove(ViewData.TemplateInfo.GetFullHtmlFieldName(""));
}
@Html.TextBox(string.Empty, (Model ?? string.Empty).ToUpper())