2009-02-04 64 views
3

當表單回發到服務器時,是否可以在控制器操作中操作,更改,設置HTTP Post中包含的值?我想刪除用戶輸入的某些文本框值,以便始終必須重新輸入這些值(例如密碼字段)。默認情況下,Html助手從HTTP Post信息中提取HTML控件的初始值。ASP.NET MVC - 操縱HTTP發佈

回答

7

您不需要自定義的ModelBinder。

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

Now Foo and Bar are 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's post涵蓋此主題。