2012-07-09 66 views
3

我有我的MVC 3應用程序與不顯眼的驗證。在目前看來<form action=''>..</form>之一,那裏我有兩個按鈕。第一個按鈕提交表單'action1',第二個按鈕提交'action2'。在第一種情況下,我必須驗證表單,但在第二種情況下,我需要發佈信息,而無需驗證,是否有可能?目前模型在兩種情況下均有效。關閉不顯眼的驗證運行時?

回答

2

我找到了答案。要在「動作2」禁用驗證我在控制器執行下一個方法:

ModelState.Clear(); 

並鑑於

Html.EnableClientValidation(false); 
1

過了一段時間,因爲我已經完成了Asp.net MVC,這是你在找什麼?

@if(false) { // Replace false with your model property 
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
} 
1

你有兩個選擇:

1)不要在控制器操作使用ModelState.IsValid。在action1上,運行驗證表單的JavaScript方法。如果表格有效,請提交表格。在action2上,因爲您沒有使用ModelState.IsValid,請提交表單並且您的控制器操作將會運行。

2)在Controller動作中使用ModelState.IsValid。將兩個提交按鈕命名爲相同的名稱(即'SubmitButton')。將'action1'和'action2'分配爲相應提交按鈕的值。將SubmitButton作爲字符串參數傳遞給Controller操作。如果SubmitButton ='action1'查詢ModelState.IsValid。否則,請勿查詢ModelState.IsValid。

1選項代碼

控制器:

[HttpPost] 
public ActionResult SomeAction(ModelObject theModel, string SubmitButton) 
{ 
    if (SubmitButton== 'Action1') 
    { 
     if(ModelState.IsValid) 
     { 
      //do some work 
     } 
     else 
     { 
      return(View(theModel)); 
     } 

    } 
    else //action2 has ben used to submit, so don't vaildate 
    { 
     //do some work 
    } 
} 

查看:

<input type="submit" id="action1" name="SubmitButton" value="Action1"/> 
<input type="submit" id="action2" name="SubmitButton" value="Action2"/>