एएसपी.नेट इकाई प्रबंधक: एक दृश्य में एक से अधिक इकाई बनाएं

मैं एक व्यू-व्यू बनाना चाहता हूं जहां आपके पास एक से अधिक इकाई के लिए मूल्य दर्ज करने की संभावना है - "इकाइयों की एक सूची" जैसे इकाई वर्ग

public class MyEntity{
public string myAttribute { get; set; }
}

दृश्य के लिए मैंने एक मॉडल व्यू बनाया जो इस तरह दिखता है:

public class MoreEntites{
public List MyEntities { get; set; }
}

व्यू में मैं अधिक एकता में उपयोगकर्ता को अधिक डेटासेट दर्ज करने की संभावना देने के लिए MoreEntities का उपयोग करना चाहता हूं (मेरे सुझाव जो निश्चित रूप से काम नहीं करते हैं)

@model myproject.ViewModels.MoreEntities
 ...
<div class="editor-label">
     @Html.LabelFor(model => model.MyEntities.ElementAt(0).MyAttribute)
</div>
<div class="editor-field">
     @Html.EditorFor(model => model.MyEntities.ElementAt(0).MyAttribute)
     @Html.ValidationMessageFor(model => model.MyEntities.ElementAt(0).MyAttribute)
</div>
<div class="editor-label">
     @Html.LabelFor(model => model.MyEntities.ElementAt(1).MyAttribute)
</div>
<div class="editor-field">
     @Html.EditorFor(model => model.MyEntities.ElementAt(1).MyAttribute)
     @Html.ValidationMessageFor(model => model.MyEntities.ElementAt(1).MyAttribute)
</div>
...

अब नियंत्रक में मैं सूची में पुन: प्रयास करना चाहता हूं और डेटाबेस में MyEntities के प्रत्येक आइटम को लिखना चाहता हूं। जब मैं प्रोग्राम चलाता हूं तो मुझे अपवाद मिलता है कि मेरी सूची शून्य है और मुझे इसका उपयोग करने से पहले इसे शून्य के लिए जांचना चाहिए। क्या यह संभव है और यह कैसे काम करता है? एक "समाधान" एक ऐरे बनाने के लिए होगा, लेकिन इस मामले में मेरा कार्यक्रम स्केलेबल होगा। मदद के लिए धन्यवाद!

0
काम नहीं करता है क्योंकि सूची इस समय उदाहरणों की एक सूची नहीं है, अगर आप इसे अपडेट करना चाहते हैं
जोड़ा लेखक user3034274, स्रोत
क्या आप अपना कंट्रोलर विधि कोड शामिल कर सकते हैं?
जोड़ा लेखक EkoostikMartin, स्रोत
जोड़ा लेखक Sam Axe, स्रोत

1 उत्तर

एंटिटी के] ऐरे [] के साथ काम करता है !!!! उपाय: आदर्श:

public class MyEntity{
public string MyAttribute { get; set; }
}

ViewModel:

public class MoreEntites{
public MyEntity[] MyEntities { get; set; }
}

राय:

@model myproject.ViewModels.MoreEntities
 ...
<div class="editor-label">
     @Html.LabelFor(model => model.MyEntities[0].MyAttribute)
</div>
<div class="editor-field">
     @Html.EditorFor(model => model.MyEntities.[0].MyAttribute)
     @Html.ValidationMessageFor(model => model.MyEntities[0].MyAttribute)
</div>
<div class="editor-label">
     @Html.LabelFor(model => model.MyEntities[1].MyAttribute)
</div>
<div class="editor-field">
     @Html.EditorFor(model => model.MyEntities[1].MyAttribute)
     @Html.ValidationMessageFor(model => model.MyEntities[1].MyAttribute)
</div>
...

नियंत्रक:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateMoreEntitiesAtOnce(MoreEntities set)
{
    foreach(var item in set.MyEntities) 
    {
        db.MyEntity.Add(item);
    }

    db.SaveChanges();

    return RedirectToAction("Index");
}

मेरे मामले में यदि जावास्क्रिप्ट द्वारा दृश्य में अधिक टेक्स्टबॉक्स जोड़ने के लिए प्रयास करना है तो प्रयास करें इसलिए आपको उन्हें DOM में जोड़ते समय टेक्स्टबॉक्स के नाम को सादे HTML में बढ़ाने की आवश्यकता है

0
जोड़ा
बस मेरे मूल कोड का एक संकेत, माफ करना इसे MyEntities के साथ बदल दिया
जोड़ा लेखक user3034274, स्रोत
CreateMoreEntitiesAtOnce (MyEntities सेट) <- क्या MyEntities यहां है? और <कोड> विकल्प [] ?
जोड़ा लेखक christiandev, स्रोत