【问题标题】:custom template asp.mvc problem自定义模板asp.mvc问题
【发布时间】:2011-04-06 12:09:57
【问题描述】:

我有强类型视图,字符串类型属性的自定义模板,我应该改变值

// 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())

但它不起作用 - 我得到旧的 Name 值,没有改变

我忘记了重要的细节——名称属性从 URL 中的查询字符串中获取值——

http://localhost:53494/?Name=blah

【问题讨论】:

  • 它给了你什么?
  • 它给出旧的 Model.Name,值不会改变
  • 你想达到什么目的?不工作是什么意思?
  • 我尝试更改名称字段的值,但我从 url 中的查询字符串获取原始值

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 2017-04-10
    • 2023-03-21
    • 2011-11-18
    相关资源
    最近更新 更多