2013-03-28 26 views
1

時返回不正確的結果我有內剃刀這個例子中的代碼:ExpressionHelper.GetExpressionText()使用表達與鑄造

@Html.TextBoxFor(x => ((VisitGozo.Modules.Data.Events.EventSpecificFieldsData)x.Event.DataObject.SpecificFields).LinkedTourismProduct)

正如你可以看到,所述表達包括鑄造。 TextBoxFor使用ExpressionHelper.GetExpressionText()方法將表達式轉換爲模型綁定的文本。

在上面的示例中,由於投射,返回的字段名稱只是LinkedTourismProduct而不是Event.DataObject.SpecificFields.LinkedTourismProduct。如果沒有任何投射,則會正確返回全名。

因此,在模型綁定過程中,它不綁定到正確的屬性,因爲模型的屬性僅爲Event.DataObject.SpecificFields.LinkedTourismProduct而不是LinkedTourismProduct

任何想法爲什麼會發生這種情況,是否有任何其他解決方案/解決方法?

回答

2

這是正常的行爲。只有簡單的表達式(屬性訪問和索引器訪問)由強類型助手支持。鑄造不是。

正確的方法做,這是對正確類型的您的視圖模型屬性:

public EventSpecificFieldsData EventSpecificFields { get; set; } 

,然後你的文本框綁定到它沒有任何強制轉換:

@Html.TextBoxFor(x => x.Event.DataObject.EventSpecificFields.LinkedTourismProduct) 
+0

謝謝很多@Darin,我認爲這是一種解決方法,所以它應該是這樣的:) – 2013-03-28 11:28:48