自定义模板asp.mvc问题

时间:2011-04-06 12:09:58

标签: .net asp.net-mvc-3 razor

我有强类型的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

1 个答案:

答案 0 :(得分:2)

TextBox之类的Html帮助程序在绑定它们的值时总是首先查看modelstate,因为已经有一个来自请求字符串的值,它会忽略你传递给它的第二个参数。因此,要实现您正在寻找的内容,您可能需要先从模型状态中删除该值:

@model string
@{
    ViewData.ModelState.Remove(ViewData.TemplateInfo.GetFullHtmlFieldName(""));
}
@Html.TextBox(string.Empty, (Model ?? string.Empty).ToUpper())