ASP.NET MVC - 操作 HTTP Post

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

7

您不需要自定义的ModelBinder。

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

现在Foo和Bar都是null。

这样做可以实现你的要求,但我不确定这是否符合你的意思。 :)

我的猜测是,你的操作确实需要查看用户输入的密码(或其他内容)。但是,例如,如果需要重新输入其他字段,当重新显示表单时,不希望填充密码。这是一个好主意。但在这种情况下,模型绑定器甚至不会进入。你只需在重新显示视图之前将字段设置为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( //...
   }

0

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

ScottGu的帖子涵盖了这个主题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接