2013-09-24 31 views
0

因此,基本上我的模型中有一個bool,並且在我看來,我有一個隱藏字段,當我選擇某個選擇框時,我將其設置爲true或false。現在我有這個,我需要以某種方式檢查控制器中隱藏字段的值和bool的值。如果這是真的,我想運行一個方法,如果它是假的,我希望它跳過該方法。檢查隱藏的布爾值運行方法

這裏是我的HTML無形的領域是在底部:

<div id="addTransfereeForm" class= "invisible" "whiteborder"> 
    <form name="addTransferee" id="addTransferee"> 
    <p><b><u>Add a New Transferee</u></b></p> 
     Transfer Effective Date: <input type="text" name="transfereffectivedate"  class="datepicker"<br /> <br /> 
     Transferee Name: <input type="text" name="transfereename" /><br /> 
     Transferee Notice Address Line 1: <input type="text" name="transfereenoticeaddressline1" /><br /> 
     Transferee Notice Address Line 2: <input type="text" name="transfereenoticeaddressline2" /><br /> 
     Transferee Notice City: <input type="text" name="transfereenoticecity" /><br /> 
     Transferee Notice State: <input type="text" name="transfernoticestate" /><br /> 
     Transferee Notice Zip: <input type="text" name="tranfernoticezup" /><br /> 
     Transferee Notice Phone: <input type="text" name="transfereenoticephone" /><br /> 
     Transferee Payment Address Line 1: <input type="text" name="transfereepaymentaddressline1" /><br /> 
     Transferee Payment Address Line 2: <input type="text" name="transfereepaymentaddressline2" /><br /> 
     Transferee Payment City: <input type="text" name="transfereepaymentcity" /><br /> 
     Transferee Payment State: <input type="text" name="transfereepaymentstate" /><br /> 
     Transferee Payment Zip: <input type="text" name="transfereepaymentzip" /><br /> 
     Transferee Payment Phone: <input type="text" name="transfereepaymentphone" /><br /> 
     <input type="hidden" name="newtransferee" /> 
    </form> 
</div> 

這裏是我的模型(NewTransferee是我設置爲true或false的布爾):

public class CreateTransferee 
{ 
    public DateTime? TransferEffectiveDate { get; set; } 
    public string TransfereeName { get; set; } 
    public string TransfereeNoticeAddressLine1 { get; set; } 
    public string TransfereeNoticeAddressLine2 { get; set; } 
    public string TransfereeNoticeCity { get; set; } 
    public string TransfereeNoticeState { get; set; } 
    public string TransfereeNoticeZip { get; set; } 
    public string TransfereeNoticePhone { get; set; } 
    public string TransfereePaymentAddressLine1 { get; set; } 
    public string TransfereePaymentAddressLine2 { get; set; } 
    public string TransfereePaymentCity { get; set; } 
    public string TransfereePaymentState { get; set; } 
    public string TransfereePaymentZip { get; set; } 
    public string TransfereePaymentPhone { get; set; } 
    public bool NewTransferee { get; set; } 
} 

這裏是我的控制器(我需要編輯它以使其在運行末端部分之前檢查布爾值):

[NoCache] 
    [HttpPost] 
    [ValidateAntiForgeryToken] 

    public JsonResult ResolveProfileSelectionRequired(ResolveProfileSelectionRequiredModel model) 
    { 
     var resolved = SqlDataProvider.ResolveProfileSelectionRequiredJobException(model); 

     return resolved ? Json("Success") : Json("Failed"); 
    } 

最後,我有我創建運行如果布爾爲真(這是位於SQLDataProvider.cs)的方法:

public static int CreateNewTransferee(CreateTransferee model) 
    { 

     using (var db = new NJB.NJBDataContext()) 
     { 
      var result = db.SP_AddTransferee(
      model.TransferEffectiveDate, 
      model.TransfereeName, 
      model.TransfereeNoticeAddressLine1, 
      model.TransfereeNoticeAddressLine2, 
      model.TransfereeNoticeCity, 
      model.TransfereeNoticeState, 
      model.TransfereeNoticeZip, 
      model.TransfereeNoticePhone, 
      model.TransfereePaymentAddressLine1, 
      model.TransfereePaymentAddressLine2, 
      model.TransfereePaymentCity, 
      model.TransfereePaymentState, 
      model.TransfereePaymentZip, 
      model.TransfereePaymentPhone); 

      return (int) result.ReturnValue; 
     } 
    } 
+0

而......問題是什麼? 'model.NewTransferee'是否不包含控制器操作中的期望值? – David

+1

對於不可見的輸入字段,使用''。 – Raidri

+0

@David我對MVC有點新,我正在尋找簡單的檢查控制器中bool的值,我甚至無法啓動。我需要編輯控制器的這一部分,以檢查頁面POST時布爾值是true還是false。然後根據該檢查運行該方法。 –

回答

1

如果你需要做的是檢查一個布爾值,這只是一個條件語句:

public JsonResult ResolveProfileSelectionRequired(ResolveProfileSelectionRequiredModel model) 
{ 
    if (model.NewTransferee) 
    { 
     // do something 
    } 
    else 
    { 
     // do something else 
    } 
} 

這不是完全清楚你的目標是什麼,雖然,因爲你當前的return語句依賴在你只想有條件地調用的方法的輸出上。所有的代碼路徑將需要返回東西。也許是這樣嗎?:

public JsonResult ResolveProfileSelectionRequired(ResolveProfileSelectionRequiredModel model) 
{ 
    if (model.NewTransferee) 
    { 
     var resolved = SqlDataProvider.ResolveProfileSelectionRequiredJobException(model); 

     return resolved ? Json("Success") : Json("Failed"); 
    } 
    else 
    { 
     return Json("Success"); 
    } 
} 

再次,我不知道如果不知道更多關於您的此行動的預期行爲。

值得注意的是,這不是一個真正的「MVC」的東西。最簡單的是,這個動作方法只是一種接收類型爲ResolveProfileSelectionRequiredModel的參數的方法。條件語句只是簡單的C#。所有返回值的代碼路徑都是純C#。關於這種方法的唯一「MVC」是它返回JsonResult


編輯:我只是注意到......你要找的值在CreateTransferee模式,但你的控制器接收ResolveProfileSelectionRequiredModel?那價值在ResolveProfileSelectionRequiredModel?他們似乎非常相似。如果它不在該模型上,可以將其添加到該模型中,或使用@ Raidri的方法將其添加爲控制器操作的顯式參數。

1

展開了新的參數您的控制器動作:

public JsonResult ResolveProfileSelectionRequired(ResolveProfileSelectionRequiredModel model, bool newtransferee = false) 

和檢查它的行動。

+0

好吧,我知道這是一個noob問題,但是通過if-else語句檢查此問題的最佳方法是如何應用當需要在true時運行的方法並在false時傳遞方法? –

+1

是的(if語句應該足夠了,不需要else語句) – Raidri

0

你可以使用:

if (Request.Form["newtransferee"].ToLower() == "true") 

或沒有,如果你寫這個代替人工的HTML工作?

@Html.HiddenFor(model => model.NewTransferee)