0

I want to put an empty C# List to the razor view. Inside of the view I get array of data (taken from JavaScript code). Fill the content of the array into the C# List and put it back to the controller.

Now, I know that is not possible, then I find a more simpler solution, see details in my example.

One Item of the collection

public class GrafikSpielItem
{
    public String Stil { get; set; }
    public int XStart { get; set; }
    public int YStart { get; set; }
    public int XStop { get; set; }
    public int YStop { get; set; }        
    public String Farbe { get; set; }
}

controller class

 // GET: GrafikSpiel
[HttpGet]
public ActionResult AufgabeB(string[] arr)
{
    // arr is the JSON-String from Grafik.js

    if (arr == null) return View();

    List<GrafikSpielItem> items = new List<GrafikSpielItem>();

    // adapted from: https://stackoverflow.com/questions/19910476/c-sharp-parsing-json-array-of-objects
    // Thanks to: Bibaswann Bandyopadhyay
    JArray array = JArray.Parse(arr[0]);
    foreach (JObject obj in array.Children<JObject>())
    {
        var item = new GrafikSpielItem();
        int nCounter = 1;
        foreach (JProperty singleProp in obj.Properties())
        {
            switch(nCounter)
            {
                case 1: item.Stil = singleProp.Value.ToString(); break;
                // case 2: ..

                default:
                    break;
            }
            nCounter++;
        }
        items.Add(item);
    }     


    // not implemented yet
    // connect to database
    // db.SetData(items)


    return RedirectToAction("Index");
}


Razor view

...
   // moved source code from here to JS

    <script src="~/Scripts/Grafik.js"></script>

</body>
</html>

JavaScript: Grafik.js

// convert simple array to JSON and send it back to controller
 var arrStr = encodeURIComponent(JSON.stringify(linesArray));
 var url = "AufgabeB?arr=" + arrStr;
 window.location.href = url;

KolaSiro
  • 45
  • 1
  • 9
  • 1
    Your code seems a bit mixed up in the Razor view. Maybe you should find some tutorial? The code in the ` – mortb Jan 14 '20 at 14:47

1 Answers1

0

I found a solution - see edited code - thanks to user mortb and user Bibaswann Bandyopadhyay.

KolaSiro
  • 45
  • 1
  • 9