asp.net mvc एएसपी.नेट एमवीसी, मॉडल से नियंत्रक को देखें




asp.net-mvc controller (2)

  1. @ Html.TextBoxFor (सामान => अन्य सामग्री) सामान में आपका दृश्य का मॉडल है, अन्य मॉडल आपके मॉडल का सार्वजनिक सदस्य है
  2. दृश्य में से आप संग्रह प्रकार (सूची) के मॉडल सदस्य के लिए इनपुट तत्वों को प्रस्तुत करना चाहते हैं, इसलिए आपको पहले उस संग्रह (प्रक्रिया) के एकल आइटम को प्रस्तुत करने के लिए एक अलग आंशिक दृश्य बनाना चाहिए। यह इस तरह से कुछ दिखाई देगा (उदाहरण के लिए, प्रोसेस। सीएमटीएम नाम दें, और / दृश्य / साझा फ़ोल्डर में रखें):

    @model List<PROJ.Models.Process>
    
    @Html.TextBoxFor(model => p.value)

उसके बाद, आपका मुख्य दृश्य इस तरह दिखाई देगा:

@model PROJ.Models.InputModel

@using(Html.BeginForm()) {
  foreach(PROJ.Models.Process p in Model.axProc){
    @Html.Partial("Process", p)
  }
  <input type="submit" value="SEND" />
}

इसके अलावा, जांच लें कि loadInputModel () विधि वास्तव में कुछ देता है, उदाहरण के लिए खाली सूची नहीं है

मुझे एएसपी.नेट एमवीसी के साथ परेशानी हो रही है और नियंत्रक को देखने से डेटा गुजर रहा है I मेरे पास एक मॉडल है:

 public class InputModel {
   public List<Process> axProc { get; set; }

   public string ToJson() {
     return new JavaScriptSerializer().Serialize(this);
   }
 }

 public class Process {
   public string name { get; set; }
   public string value { get; set; }
 }

मैं अपने नियंत्रक में इस इनपुट मॉडेल को बनाऊं और इसे देखें:

public ActionResult Input() {
  if (Session["InputModel"] == null)
    Session["InputModel"] = loadInputModel();
  return View(Session["InputModel"]);
}

मेरे Input.cshtml फ़ाइल में इनपुट फार्म उत्पन्न करने के लिए मेरे पास कुछ कोड है:

@model PROJ.Models.InputModel

@using(Html.BeginForm()) {
  foreach(PROJ.Models.Process p in Model.axProc){
    <input type="text" />
    @* @Html.TextBoxFor(?? => p.value) *@
  }
  <input type="submit" value="SEND" />
}

अब जब मैं सबमिट बटन पर क्लिक करता हूं, तब मैं डेटा के साथ काम करना चाहता हूं जो टेक्स्टफ़ील्ड में डाल दिया गया था।

प्रश्न 1: मैंने इसे @ एचटीएमएल। टेक्स्टबॉक्स () देखा है, लेकिन मुझे वास्तव में यह "सामान => अन्य चीज नहीं मिलती" मैंने निष्कर्ष निकाला कि "अन्य चीज" फ़ील्ड होनी चाहिए, जहां मैं अपना डेटा लिखना चाहता हूं, इस मामले में शायद यह "p.value" होगा। लेकिन तीर के सामने "सामान" चीज क्या है?

नियंत्रक में वापस मेरे पास कुछ डीबग के साथ पोस्ट के लिए एक फ़ंक्शन है:

[HttpPost]
public ActionResult Input(InputModel m) {
  DEBUG(m.ToJson());
  DEBUG("COUNT: " + m.axProc.Count);

  return View(m);
}

यहां केवल डीबग की तरह कुछ दिखाया गया है:

{"axProc":[]}
COUNT: 0

तो लौटा मॉडल मैं खाली है।

प्रश्न 2: क्या मैं इस @using (HTML.BeginForm ()) के साथ मौलिक रूप से कुछ गलत कर रहा हूं? क्या यह सही विकल्प नहीं है? यदि हां, तो मैं अपने मॉडल को डेटा से भरकर नियंत्रक को कैसे प्राप्त करूं?
(मैं "@ मॉडल सूची <प्रक्रिया>" का उपयोग नहीं कर सकता यहाँ (क्योंकि उपरोक्त उदाहरण को संक्षिप्त किया गया है, वास्तविक कोड में अधिक सामान होगा)।)

मुझे उम्मीद है कि कोई मुझे मुझे विवरणों में से कुछ के साथ भर सकता है


अपने दृश्य को कुछ चीज़ों के साथ बदलें ताकि फ़ॉर्म सबमिशन पर सूची को ठीक से बाँध सकें।

@using(Html.BeginForm()) {
  for(int i=0;i<Model.axProc.Count;i++){
   <span>
    @Html.TextBoxFor(model => model.axProc[i].value)
</span>
  }
  <input type="submit" value="SEND" />
}




html.beginform