2010-11-19 54 views
0

我的禿頭正在增長得比應該更快。幾天前我第一次發貼this question。我現在知道這個問題,並讓它工作......有點。另一個問題浮出水面。表單行動發佈null

爲了解決上述問題,我手動創建了名稱requestedDays[{0}].DateOfLeave,其中{0}Guid。這允許我的控制器正確接收值的列表<>。

使用this article's method,生成的名稱是requestedDays[{0}].DayRequested.DateOfLeave,這是我的控制器無法正確接收的名稱,因爲該名稱中包含類DayRequested.DateOfLeave

[Authorize, HttpPost] 
    public ActionResult Create(LeaveRequest leaveRequest, List<DayRequested> requestedDays) 
    { 
    } 

我試圖找出手動生成的解決方法,但沒有任何我已經嘗試到目前爲止的作品。 You can see my validation method here。但是,我知道second part of Sanderson's article on validation,要驗證某些未傳入該方法的內容非常困難。

這是我在我的部分視圖中使用的ViewModel。

public class LeaveRequestRow 
{ 
    public LeaveRequestRow(DayRequested dayRequested, List<SelectListItem> leaveRequestType) 
    { 
     this.DayRequested = dayRequested; 
     this.LeaveRequestType = leaveRequestType; 
    } 

    public List<SelectListItem> LeaveRequestType { set; get; } 
    public DayRequested DayRequested { set; get; } 
} 

有沒有人有任何想法如何進行?我應該將我的下拉菜單轉換爲jQuery構建控件並停止使用ViewModel嗎?

+0

我在想你鏈接的文章提供的代碼可能是越野車。 – 2010-11-22 17:27:28

回答

0

我已經解決了這個問題,雖然沒有我希望的那麼優雅。所有TextBoxFor必須更改爲TextBox以及執行此操作所需的附加更改。然後名字被正確地生成,我可以繼續前進。這確實破壞了驗證消息出現在字段旁邊的能力,儘管ValidationSummary仍然有效。我將繼續努力解決此問題,並在我的網站上發佈代碼示例和解決方案。

0

複雜類型的綁定1-N控制器參數可能有些棘手。

你的代碼示例並沒有與我週五的腦袋裏的結束日期齧合,但我會給它一個鏡頭。

假設LeaveRequest類看起來是這樣的:

public class LeaveRequest { 
    public string Text { get; set; } 
    public string Number { get; set; } 
} 

張貼的形式鍵必須是:

leaveRequest.Text 
leaveRequset.Number 

這是比較容易的部分。 DayRequested列表的1-N綁定有點奇怪。說DayRequested物體看起來是這樣的:

public class DayRequested { 
    public string Words { get; set; } 
    public string Data { get; set; } 
} 

您發佈的形式,按鍵的樣子:

requestedDays[0].Data 
requestedDays[0].Words 
requestedDays[1].Data  
requestedDays[1].Words 
requestedDays[2].Data  
requestedDays[2].Words 
requestedDays[3].Data  
requestedDays[3].Words 

默認MVC粘結劑應然後真理的所有10個表格值到你的兩個方法的參數...一個POCO和一個POCO列表。

+0

我很困惑。我發佈的密鑰現在是'requestedDays [x] .Class.Field'。我想將其更改爲'requestedDays [x] .Field',而無需手動重命名所有內容。 – 2010-11-22 16:58:13