簡體   English   中英

向ASP.NET MVC控制器中的操作方法發出HttpPost請求

[英]Make HttpPost request to an action method in an ASP.NET MVC controller

我試圖建立一種功能,需要在我們的應用程序中創建候選人的個人資料。 創建候選人的個人資料有兩個步驟/用戶界面:

1-創建模板...用戶在其中輸入應聘者的信息。

2-預覽模板...,其中向用戶顯示他們的個人資料添加到我們的系統后的外觀預覽。

我已經通過一個名為“ CandidateController”的控制器創建了支持這些UI的視圖,該控制器包含一些操作方法:

1- [HttpGet]“ Create”返回創建模板。

[HttpGet]
public ViewResult Create()

2- [HttpPost]“預覽”,返回預覽模板。

 [HttpPost]
 public ActionResult Preview(ProfileViewModel viewModel)

現在,我需要實現的是在Create模板中具有一個按鈕/鏈接,該按鈕/鏈接將在控制器中調用action方法[HttpPost] Preview。

挑戰我還想知道,如果能夠從第一個創建模板調用HttpPost Preview操作方法,則模型綁定器是否可以為我加載ViewModel對象。

我正在尋找有關如何最好地實現這種功能的建議/幫助。

任何幫助將不勝感激。

挑戰我還想知道,如果能夠從第一個創建模板調用HttpPost Preview操作方法,則模型綁定器是否可以為我加載ViewModel對象。

您可以使用標准表單或AJAX調用來調用Preview POST操作,然后傳遞視圖模型的所有屬性值。 您在此請求中傳遞的所有值將是將由默認模型綁定程序綁定的值。 是一篇文章,說明默認模型聯編程序如何期望為更復雜的結構(如列表和字典)命名參數。

AJAX的示例:

$.ajax({
    url: '@Url.Action("Preview")',
    type: 'POST',
    data: { Prop1: 'value 1', Prop2: 'value 2' },
    success: function(result) {
        // TODO: do something with the result returned from the POST action
    }
});

如果您不想使用AJAX,則可以使用帶有隱藏字段的標准表單:

@using (Html.BeginForm())
{
    @Html.Hidden("Prop1", "value 1")
    @Html.Hidden("Prop2", "value 2")
    ...
    <button type="submit">Preview</button>
}

好的,這是我必須解決的選項:

  • 正如Darin所建議的那樣,您可以通過使用$ .ajax(options)來保持兼容,但是問題是,僅當您要進行部分頁面更新或要進行更新/轉儲時,才可以使用這種方式。在同一視圖中的新html。
  • 而且,如果您不想使用Ajax,而不是使用“隱藏”字段,則可以只使用MVC中的TempData屬性,這就是我使用TempData實現目標功能的方式。 psbelow ...

     [HttpPost] public ActionResult Create(ViewModel viewModel) { this.TempData["profile"] = viewModel; return RedirectToAction("Preview"); } public ActionResult Preview() { if (TempData["profile"] != null) { return View((ViewModel)TempData["profile"]); } // Handle invalid request... return null; } 

因此,該解決方案對我來說非常有效,因為我沒有編寫任何JavaScript或不必要的HTML。 並且感謝達林將我引導到一個起點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM