iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 30
0
自我挑戰組

ArasPLM開發分享系列 第 30

[Day30]在MVC的View當中利用.submit()簡化在Form表單送往Controller的動作

  • 分享至 

  • xImage
  •  

當我們在前端想減少一些按按鈕傳送Form表單的動作時,就能利用.submit()在另一個按鈕按下時,就可以直接將Form表單送往Controller,減少在Form表單中按按鈕的動作

HTML

  1. 首先先到View的HTML當中,using一個利用POST方式傳送的Form,在Form當中建立一個隱藏的button(被呼叫的按鈕),在建立一個button(呼叫的按鈕)用來呼叫function執行將隱藏的button點擊並將form表單送往Controller,想了解如何將Form POST到Controller的朋友可以看 (https://ithelp.ithome.com.tw/articles/10215364) 的介紹
@{
    ViewBag.Title = "Home Page";
}

@using (Html.BeginForm("Index", "Form", FormMethod.Post, new { id = "Index_form", 
        role =  "form" }))
{
    <button type="submit" class="btn btn-primary btn-block" id="indexs-button"  
                          style="display: none">被呼叫的按鈕</button>
}

<button type="submit"  class="btn btn-primary" id="index-button">呼叫的按鈕
</button>

JavaScript

  1. 接下來是JavaScript的部分,利用jQuery再點選呼叫的按鈕時去執行function及alert顯示字串,function的內容為利用.submit()將form表單直接送往Controller,這樣就能讓原本要兩個按鈕各點一次才能完成的動作,簡化為點擊一個按鈕後就能完成
@section scripts
{
    <script type="text/javascript">
        $('#index-button').click(function () {
            show();
            alert("test");
        });

        function show() {
            document.getElementById("Index_form").submit();
        }
    </script>
}

Controller

  1. 再來是到Controller中建立一個具有HttpPost的Action,當然可以在前端的Form當中將資料Post到Action當中利用Request["xxx"]來取得值(xxx為input的id/name),但是這邊為了簡單介紹就直接alert一個彈跳視窗顯示字串
public ActionResult Index()
{
    return View();
}

[HttpPost]
public ActionResult Form()
{
    Response.Write("<script language=javascript>alert('123');</" + "script>");
    return View("Index");
}
  1. 最後到頁面中只需要點選一個按鈕,就能看到出現兩個彈跳視窗,完成簡化點選按鈕將Form表單送往Controller的動作


上一篇
[Day29]在MVC中利用ViewModel將Model的兩個資料表合併為自訂資料表
系列文
ArasPLM開發分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言