[英]Download a File by POST (HttpPost action) on ASP.NET MVC controller action using Javascript
[英]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>
}
好的,這是我必須解決的選項:
而且,如果您不想使用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.