2014-10-16 39 views
0

我在我的應用程序的聯繫人視圖,它包含一種形式,其被定義爲如下:如何在MVC5中調用HttpPost ActionResult?

<form role="form" style="width:100%; float:left;"> 
    <div class="form-group"> 
     <a href="#"><img src="~/Content/img/zarf.png" class="zarf-pos"></a> 
    </div> 

    <div class="form-group"> 
     <label for="exampleInputEmail1">Name and Surname</label> 
     <input type="text" name="fullName" class="form-control" id="exampleInputEmail1" placeholder="Enter your full name" required> 
    </div> 
    <div class="form-group"> 
     <label for="exampleInputPassword1">E-Mail</label> 
     <input type="email" name="emailAddress" class="form-control" id="exampleInputPassword1" placeholder="Enter your e-mail address" required> 
    </div> 
    <div class="form-group"> 
     <label for="exampleInputEmail1">Write to us</label><br> 
     <textarea name="message" class="form-control" rows="5" placeholder="How can we help you?" required></textarea> 
    </div> 

    <div class="form-group"> 
     <button type="submit" class="btn btn-default reg-position">Send</button> 
    </div> 
</form> 

然後,在我的控制器,我有兩個ActionResults,一個HTTPGET,和一個HttpPost,如定義這樣的:

[HttpGet] 
public ActionResult Contact() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult Contact(string fullName, string emailAddress, string message) 
{ // some functionality } 

但是,當我填寫表格,然後點擊發送按鈕,將其重定向到空聯繫頁面。重點是我需要有兩個聯繫方式,而在我的Post方法中,我有一些假設字符串不爲空的代碼。如果我只有一個聯繫方式,則會收到一條錯誤消息,指出該字符串爲空,並且不顯示該視圖。所以,我決定有兩種方法,但不知道如何在按下按鈕時調用post方法。

+2

關於'form'元素的一點注意,它應該有一個action屬性'

AaronLS 2014-10-16 21:42:40

回答

2

假設你正在使用剃刀來創建你的意見,定義表單,像這樣:

@using(Html.BeginForm()) 
{ 
    <div class="form-group"> 
     <a href="#"><img src="~/Content/img/zarf.png" class="zarf-pos"></a> 
    </div> 

    <div class="form-group"> 
     <label for="exampleInputEmail1">Name and Surname</label> 
     <input type="text" name="fullName" class="form-control" id="exampleInputEmail1" placeholder="Enter your full name" required> 
    </div> 
    <div class="form-group"> 
     <label for="exampleInputPassword1">E-Mail</label> 
     <input type="email" name="emailAddress" class="form-control" id="exampleInputPassword1" placeholder="Enter your e-mail address" required> 
    </div> 
    <div class="form-group"> 
     <label for="exampleInputEmail1">Write to us</label><br> 
     <textarea name="message" class="form-control" rows="5" placeholder="How can we help you?" required></textarea> 
    </div> 

    <div class="form-group"> 
     <button type="submit" class="btn btn-default reg-position">Send</button> 
    </div> 
} 

這將確保正確的<form>元素時產生回發到你的行動。

P.S.只是一些術語管家......你不要調用ActionResult,你調用Actions並且他們返回ActionResults。如果你正在使用正確的名稱來處理事情,它會幫助你與其他開發人員交流。

+1

除此之外,您還可以指定操作名稱和控制器名稱作爲BeginFrom Method- @ using(Html.Beginform(「action」,「controller」)) – 2014-10-16 21:40:29

+0

@PavanJosyula的參數,絕對正確。在他的情況下,他回到相同的控制器和相同的操作方法名稱,所以沒有必要。如果發佈後操作觸發了不同的控制器,或者操作方法名稱不同,那麼他必須提供這些值才能正常工作。 – 2014-10-16 21:43:44

相關問題