2011-12-09 179 views
0

我想建立一個功能,我需要在我們的應用程序中創建一個候選人的個人資料。有兩個步驟/用戶界面來創建候選人的個人資料:HttpPost請求在ASP.NET MVC控制器中的操作方法

1 - 創建模板...用戶輸入候選人的信息。

2 - 預覽模板...用戶將會看到他們的個人資料在他們的個人資料添加到系統後的樣子。

我已經創建的視圖通過一個名爲「CandidateController」控制器包含幾個動作的方法來支持這些UI的:

1- [HTTPGET]「創建」返回一個創建模板。

[HttpGet] 
public ViewResult Create() 

2- [HttpPost]「Preview」返回預覽模板。

[HttpPost] 
public ActionResult Preview(ProfileViewModel viewModel) 

現在我需要實現是在創建模板,將調用控制器中的操作方法[HttpPost]預覽按鈕/鏈接。

挑戰 我也想知道如果有一種方法,如果我能叫從先創建模板HttpPost預覽操作方法模型綁定將加載視圖模型對象我。

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

任何幫助將深表謝意。

回答

3

挑戰,我也想知道如果有一種方法,如果我能叫從先創建模板HttpPost 預覽操作方法模型綁定 將加載視圖模型對象我。

您可以使用標準窗體或AJAX調用來調用預覽POST操作,然後傳遞視圖模型的所有屬性值。您在此請求中傳遞的所有值都是將由默認模型聯編程序綁定的值。以下是an article,解釋了默認模型聯編程序如何針對更復雜的結構(如列表和詞典)命名參數。

例如用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> 
} 
+0

非常感謝您的快速回答......我會盡力回覆您... – NiK

1

OK所以這裏是我的選項以解決:

  • 由於達林建議你可以用不顯眼的方式使用$ .ajax(options),但是事情是你mi ght只有在你想要進行部分頁面更新或者想要在同一視圖中更新/轉儲新html時纔想這樣做。
  • 如果您不想使用Ajax,而不是使用隱藏字段,那麼您可以簡單地在MVC中使用TempData屬性,這就是我如何使用TempData實現我的目標功能。 p.s.below ...

    [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。並感謝Darin指導我開始。

相關問題