Asp.net mvc 在使用之前,如何在控制器中编辑Html.TextBoxFor的值?

Asp.net mvc 在使用之前,如何在控制器中编辑Html.TextBoxFor的值?,asp.net-mvc,asp.net-mvc-3,razor,html.textboxfor,Asp.net Mvc,Asp.net Mvc 3,Razor,Html.textboxfor,我正在MVC 3中进行我的项目,并正在寻找一种方法,可以将此功能添加到我的所有Html中 当用户输入“foo”并提交表单时,在控制器级别,我通过模型得到它,例如“fuu” 我需要此功能以将某些Unicode字符替换为其他字符 让我在视图和控制器中显示我的代码: [HttpPost] public virtual ActionResult Create(MyModel model) { var x = model.Title; //I need variabl

我正在MVC 3中进行我的项目,并正在寻找一种方法,可以将此功能添加到我的所有Html中 当用户输入“foo”并提交表单时,在控制器级别,我通过模型得到它,例如“fuu”

我需要此功能以将某些Unicode字符替换为其他字符

让我在视图和控制器中显示我的代码:

 [HttpPost]
    public virtual ActionResult Create(MyModel model)
    {
     var x = model.Title;
     //I need variable x have 'fuu' instead of 'foo', replaceing "o" by "u"
     //...
    }
视图:

控制器:

 [HttpPost]
    public virtual ActionResult Create(MyModel model)
    {
     var x = model.Title;
     //I need variable x have 'fuu' instead of 'foo', replaceing "o" by "u"
     //...
    }

我应该为Html.TextboxFor编写重写吗

正如我从代码中了解到的,当模型传递给控制器操作时,您希望模型准备就绪(已处理)。要实现这一点,唯一的方法是使用模型绑定。 但这种方法仅限于特定的类型/类/模型/视图模型或您所称的任何类型

您可以创建自己的modelBinder,如下所示:

 public class MyCustomModelBinder : DefaultModelBinder
    {
          public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 
          {
              var request = controllerContext.HttpContext.Request;
              var myModel= (MyModel ) base.BindModel(controllerContext, bindingContext) ?? new MyModel ();

              myModel.Title.Replace('o','u');

              return myModel;
         }
    }
然后,您可以在Global.asax中注册自定义模型绑定器

  ModelBinders.Binders.Add(typeof(MyModel),new MyCustomModelBinder());
在你的行动中做出如下改变:

   [HttpPost]
    public virtual ActionResult Create([ModelBinder(typeof(MyCustomModelBinder))] MyModel model)
    {
     var x = model.Title;
     //here you will have the modified version of your model 
     //...
    }

祝你好运。

你能把你的问题说清楚一点吗?我有一些看法。每个视图都有一些文本框。在MVC之前,我有一种方法可以更正输入的文本,然后将其保存在db中。例如,我想用“b”替换所有的“a”。每次使用输入文本时,我都会调用该方法。现在在MVC中,我正在搜索一种通用方法,它适用于视图中的所有Html.TextboxFor。您希望通用的方法不能特定于视图项(例如:TextboxFor)。但它可以特定于“模型”或“视图模型”。如果您要做的是更改从客户端发布的数据,然后将其存储在数据库中。您可以对特定类型使用自定义模型绑定。是的,您是对的!我需要对客户端发布的数据进行更改,然后将其存储。