2012-10-10 64 views
1

我對MVC非常陌生,所以我很難解釋,對不起!驗證後發送表格

我有一個表單,我希望在使用post方法發送之前進行驗證。該表單位於Index.cshtml文件中併發布到HomeController。 我的問題是當我發送表單它沒有達到正確的index()方法(HomeController與CallMeNow請求中的第二個)。

這樣可以解決這個問題嗎?

這是我在HomeController.cs文件:

// GET: /Home/ 
    [HttpGet] 
    public ViewResult Index() 
    { 
     return View(); 
    } 



    // Send CallMeNow Request. 
    [HttpPost] 
    public ViewResult Index(string txtCallMeNow) 
    { 
     if (txtCallMeNow != null) 
     { 
      // .. doing something here. 
     } 
     ViewBag.EmailSent = "Thank you."; 

     return View(); 

這是我在Index.cshtml文件:

  1. 這應該驗證表格併發送:

    $('#callMeNow1').submit(function (e) { 
        e.preventDefault(); 
        var selectedCity = $('#txtCallMeNow').val(); 
        if (selectedCity == 'enter phone number...') 
         alert('enter phone number!');        
        else 
         document.location = $(this).prop('action'); 
    }); 
    
  2. 這裏是表格。應該貼在HomeController的:

    @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { id = "callMeNow1" })) 
        { 
         <input type="text" id="txtCallMeNow" name="txtCallMeNow" onfocus="if(this.value != '') {this.value = '';}" 
          onblur="if (this.value == '') {this.value = 'enter phone number...';}" value=" enter phone number..." /><br /> 
         <input type="submit" class="call_me_now" value="" /> 
    
         @ViewBag.EmailSent; 
        } 
    

謝謝!

回答

0

如果條件滿足,您應該移動e.preventDefault();。因爲它會停止提交。我相信您希望在驗證失敗的情況下停止提交表單。

$('#callMeNow1').submit(function (e) { 

    var selectedCity = $('#txtCallMeNow').val(); 
    if (selectedCity == 'enter phone number...'){ 
     e.preventDefault(); 
     alert('enter phone number!'); 
    }        

});