【问题标题】:ASP.NET MVC - Manipulating HTTP PostASP.NET MVC - 操作 HTTP Post
【发布时间】:2009-02-04 09:06:06
【问题描述】:

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

【问题讨论】:

    标签: .net asp.net-mvc


    【解决方案1】:

    您不需要自定义 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( //...
       }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2023-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-18
        相关资源
        最近更新 更多