2016-10-03 51 views
-1

我需要現有的模型傳遞到方法,從我的部分,問題是,(它看起來像)這種語法ASP.NET MVC調用一個方法

@using (Html.BeginForm("EmployeeOverallReportFilter", "Reports", FormMethod.Post)) {}

是重建我的模型,因爲我的控制器接收模型數據只能從編輯框內@using {}

換句話說:

  1. new Model
  2. 添加一些數據& doMagic,去我的部分
  3. 在我的部分添加更多的數據,並把它傳遞給控制器​​
  4. 數據

,我有步驟3中的問題的工作,因爲一些如何(我想是因爲@using (Html.BeginForm("EmployeeOverallReportFilter", "Reports", FormMethod.Post)) {})本人喪失加入步驟數據2.

的問題是:

是真的嗎? @using (Html.BeginForm()) {}可以重新創建我的模型還是應該添加所有代碼?

還有其他一些方法可以調用方法並在那裏傳遞數據?

我已經試過這樣: <input type="submit" onclick="@Html.Action("EmployeeOverallReportFilter", "Reports", Model)" />

但錯誤:

Exception Details: System.Web.HttpException: A public action method 'EmployeeOverallReportFilter' was not found on controller 'BTGHRM.Controllers.ReportsController'.

[HttpPost] 
    public ActionResult EmployeeOverallReportFilter(EmployeeOverallReport model) 
    { 
     //foreach(var item in model.ListOfPersonalData) 
     //{ 
     // //NameFiler 
     // if((!item.FirstName.Contains(model.ModelFilters.NameFilter)) && model.ModelFilters.NameFilter!=String.Empty) model.ListOfPersonalData.Remove(item); 
     //} 
     return View("EmployeeOverAllReport", model); 
    } 
+2

表單只回傳其成功控件的值。如果您以前保存了一些關聯的數據,請將其ID添加到roure值或隱藏的輸入中,以便將其發佈,並可以使用POST方法檢索該數據。 –

+1

錯誤發生的原因是您的報告應該有一個方法Controller名爲'EmployeeOverallReportFilter',它需要用'[Post]'裝飾。要將現有數據傳回,需要使用視圖模型來包含要保留的數據的屬性,並在需要設置這些數據的'[Get]'方法中使用。然後,當您再次發佈帖子時,只要它們是表單的一部分,它們就會一直存在。 – bilpor

+1

您必須爲要發佈的所有屬性以及用戶在表單中輸入的數據包含隱藏字段。 – sachin

回答

2

我建議創建一個會話並存儲現有模型,然後畫上等號的新變化成來自會議的現有模型。如果您使用隱藏字段等機制將所有數據存儲在頁面上,則會使頁面變得沉重。

+0

它看起來像一個解決方案,但我有一個問題MB可以幫助我: EmployeeOverallReport給=列表; @Session [「ReportModel」] = give; (LATER) var take = Session [「ReportModel」]; 問題是它不能將'object'類型轉換爲我的模型的類型,因此我無法訪問模型中的內部屬性。 –

+1

var take =(EmployeeOverallReport)Session [「ReportModel」];這應該做到這一點。 –

+0

@R Jain非常感謝,很好的陌生人) –