2010-08-27 61 views
0
//method declaration 
[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Step2_UpdateCart(bool? isNextStepClicked) 

//one of many of the view's fields processed by the method 
<input type="hidden" name="isNextStepClicked" value="false" /> 

我正在逆向工程一個視圖/控制器集,其中視圖中的表單有一系列通過提交傳遞的輸入。其中一個輸入是隱藏字段 - 它的名稱可以在方法的簽名中找到 - 並且是簽名中唯一的值 - 其餘的值來自請求對象。控制器方法:通過POST傳遞值與簽名

我想也許它可能是一種情況下,該方法可以遞歸調用自己的一個不同的價值比形式進行,但我沒有看到發生在任何地方。

這是否有意義? (無論是我的問題還是我的代碼示例)。

許多感謝名單

+0

什t確切地說是你的問題?爲什麼當你隱藏它並將其值設置爲false時,甚至需要isNextStepClicked?顯然它總是假的。所以如果它總是相同的(假)你不需要它。假設在控制器動作中它是錯誤的。然而,你擁有它的方式,它應該始終被初始化 - 爲false。可能試着去除bool類型旁邊的問號......此外,您可能想要更詳細地解釋您的問題。 – mare 2010-08-28 00:24:47

+0

我沒有包含視圖代碼,其中isNextStepClicked將被觸發爲true(或不依賴於驗證例程)。我的問題是完全理解我繼承的代碼是在爲什麼只有其中一個視圖的字段出現在簽名中而其餘部分是通過請求對象傳遞的非常狹窄的上下文中進行的。 – justSteve 2010-08-28 07:15:53

+0

你不明白你在問什麼。你的問題到底是什麼? – Necros 2010-08-28 07:46:21

回答

1

您可能會發現其更好地利用輸入模型或FormCollection類型的優勢。通過第一個選項,您可以定義您的屬性,而MVC的默認模型聯編程序將盡其所能將它們映射。例如:

public ActionResult Step2_UpdateCart(UpdateCartInputModel model) 

UpdateCartInputModel可以定義爲:

public class UpdateCartInputModel { 
    public bool? isNextStepClicked { get; set; } 
    public bool? isSomeOtherPropertyClicked { get; set; } 
} 

隨着FormCollection,MVC把這個作爲一個特殊的情況和行動接受的FormCollection一個實例將填補它:

public ActionResult Step2_UpdateCart(FormCollection form) 

FormCollection,你必須自己處理類型轉換/轉換。

我個人並不認爲有必要嘗試構建一些複雜的遞歸控制器動作,當你需要完成上述任一操作時。

0

我想你是問「參數來自哪裏?」並通過參數我的意思是布爾? isNextStepClicked簽名參數。據我所知,有三種方法可以調用Controller ActionResult。

第一個是使用RedirectToAction從另一個Action進行的直接調用。接下來就像上面列出的那樣 - 從表單中,控件被聲明爲具有相同的ID作爲你的命名參數(例如給出公共ActionResult ViewName(字符串信息)的簽名。我個人覺得這很刺激,因爲我喜歡所有的我代碼與正確的外殼類型 - 但因爲大多數表單ID以大寫字母開頭,所以我的簽名參數也是如此。

第三,有直接的構造函數調用,這是最糟糕的,因爲沒有辦法跟蹤它使用Shift + F12(找到所有用途)的標記被調用。一些參數可以被命名,但不叫。控制器不需要值爲每個參數。

希望這有助於你。:-)

相關問題