मैं गतिशील सामग्री जोड़ने के लिए स्टीव सैंडर्सन की BeginCollectionItem दृष्टिकोण का उपयोग कर रहा हूं। सब कुछ ठीक काम करता है जब मैं इसे पहले स्तर पर कर रहा हूं। हालांकि, जब एक नेस्टेड संग्रह को कार्यान्वित करने का प्रयास किया जाता है जिसका अर्थ है BeginCollectionItem को किसी अन्य BeginCollectionItem में, ऐसा लगता है कि यह काम नहीं करता है।नेस्टेड BeginCollectionItem
public class Order
{
[Key]
[HiddenInput]
public int id { get; set; }
[Display(Name = "Order number")]
public string number { get; set; }
...
[Display(Name = "Payment method")]
public List<PaymentMethod> payment_methods { get; set; }
...
}
public class PaymentMethod
{
public MethodOfPayment method { get; set; }
public CC cc { get; set; }
public CASH cash { get; set; }
public TT tt { get; set; }
}
public class TT
{
[Key]
public int id { get; set; }
[Required(ErrorMessage = "{0} is required.")]
[Display(Name = "Total amount")]
public double? total_value { get; set; }
...
[Display(Name = "Transfers")]
public List<Transfer> transfers { get; set; }
}
public class Transfer
{
[Key]
public int id { get; set; }
[Display(Name = "Payment")]
public int payment_id { get; set; }
[Required(ErrorMessage = "{0} is required.")]
[Display(Name = "SWIFT")]
public string swift { get; set; }
[Required(ErrorMessage = "{0} is required.")]
[Display(Name = "Amount transferred")]
public double? transfer_amount { get; set; }
[Required(ErrorMessage = "{0} is required.")]
[Display(Name = "Date transferred")]
public DateTime transfer_date { get; set; }
...
}
अब एक आदेश कई भुगतान विधियों हो सकता था जो मैं क्या है, और अगर एक भुगतान विधि के एक टीटी (टेलेक्स हस्तांतरण) है यह कई स्थानान्तरण हो सकता है:
मेरे मॉडल इस प्रकार हैं शामिल। संग्रह आदेश के रूप में एक आदेश में कई भुगतान विधियों को कार्यान्वित करना, लेकिन जब मैं टीटी के भीतर कई स्थानान्तरण लागू करने का प्रयास करता हूं, तो इन स्थानांतरणों में से कुछ भी नियंत्रक को पास नहीं किया जाता है।
@model prj.Models.Model.Order
@using (Html.BeginForm("Create")){
@Html.ValidationSummary(true, "Creation was unsuccessful. Please correct the errors and try again.")
...
@Html.TextBoxFor(m => m.number, new { id = "txtnumber" })
...
<div id="editorPaymentRows">
@foreach (var payment in Model.payment_methods)
{
@Html.Partial("_NewPayment", payment)
}
</div>
}
_NewPayment आंशिक में:
@using prj.Helpers
@model prj.Models.Model.PaymentMethod
<div class="editPaymentRow">
@using (Html.BeginCollectionItem("payment_methods"))
{
...
<div class="editor-label">
@Html.LabelFor(m => m.tt.total_value)<req>*</req>
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.tt.total_value)
</div>
...
<div id="editorTransferRows">
@if (Model.tt != null)
{
foreach (var transfer in Model.tt.transfers)
{
@Html.Partial("_NewTransfer", transfer)
}
}
...
</div>
}
</div>
और अंत में _NewTransfer आंशिक में:
@using prj.Helpers
@model prj.Models.Model.Transfer
...
<div class="editTransferRow">
//using (Html.BeginCollectionItem("transfers"))
@using (Html.BeginCollectionItem("tt.transfers"))
{
...
<div class="editor-label">
@Html.LabelFor(m => m.swift)<req>*</req>
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.swift, new { @class = "t_swift" })
</div>
...
<div class="editor-label">
@Html.LabelFor(m => m.transfer_amount)<req>*</req>
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.transfer_amount, new { @class = "t_transfer_amount" })
</div>
...
}
</div>
तो सब कुछ काम करता है, को छोड़कर
यहाँ मेरे विचार कैसा दिखता है नियंत्रक सूची स्थानांतरण जो भुगतान विधिओं की टीटी संपत्ति में है हमेशा शून्य है। यह नियंत्रक को ठीक से पारित नहीं किया जा रहा है। क्या मुझे कुछ याद आ रहा है?
क्या नेस्टेड BeginCollectionItem काम नहीं करता है? क्या मुझे एक अतिरिक्त कदम करना चाहिए? कृपया कुछ प्रकाश डालें। धन्यवाद
मैं का उपयोग कर जो स्टीवंस के विधि दिए गए लिंक पर दिखाया गया यह समझ से बाहर:
http://www.joe-stevens.com/2011/06/06/editing-and-binding-nested-lists-with-asp-net-mvc-2/
चीयर्स
आप पर अपने समाधान पोस्ट कर सकते हैं करें:
और एक त्वरित परीक्षण की तरह आप भी कर सकते हैं लग रहा है? –