ASP.NET MVC - 操纵HTTP Post

时间:2009-02-04 09:06:06

标签: .net asp.net-mvc

当表单回发到服务器时,是否可以在控制器操作中操作,更改,设置HTTP Post中包含的值?我想删除用户输入的某些文本框值,以便始终必须重新输入这些值(例如密码字段)。默认情况下,Html帮助程序从HTTP Post信息中提取HTML控件的初始值。

2 个答案:

答案 0 :(得分:7)

您不需要自定义ModelBinder。

    [Bind(Exclude="Foo,Bar")]
    public ActionResult Insert(T model)

现在Foo和Bar为空。

这就是你要求的,但我不确定这是你的意思。 :)

我的猜测是您的操作确实需要查看用户输入的密码(或其他)。但是,例如,如果需要重新输入其他字段,则在重新显示表单时不希望填充密码。那是个好主意。但在这种情况下,模型绑定器甚至不会输入。只需在重新显示视图之前将该字段设置为null。

    public ActionResult Insert(T model)
    {
        try
        {
            Repository.Add(model);
        }
        catch (Exception ex)
        {
            ViewData["Message"] = ex.Message;
            model.Password = null;
            return View(model);
        }
        // success!
        return RedirectToRoute( //...
   }

答案 1 :(得分:0)

您可以创建一个允许您操作发布数据的自定义ModelBinder。

ScottGu's post涵盖了这个主题。