MVC C# opslaan naar json file

Status
Niet open voor verdere reacties.

rambomambo

Gebruiker
Lid geworden
9 dec 2012
Berichten
163
Beste ik heb 2 dingen geprobeert bij 1 van de 2 zit er telkens null in mijn file
bij de andere overschrijft hij mijn data

Ik zou dus willen dat ik agendaitems kan toevoegen via een mvc pagina naar een json bestand.
Dit lukt nu echter niet 100% het lukt wel voor max 1 datum op te slaan maar bij een volgende toevoeging overschrijft hij de oude datum

Het gaat vooral mis in mijn model(klasse) ofwel mijn controller (C#)

dit is mijn code

Controller

Code:
  public class HomeController : Controller
    {
        // GET: Home
   
        public ActionResult Index()
        {
            //   jsonkalender.Add(new kalender() { Password = "" });
            //kalender kl = new kalender();
            //kl.Password = obj.Password;
            //kl.MyEnum = TestEnum.taak;
            //obj.Password = kl.Password;
            //Load(null);

           
                return View();
        }

     


        private const string JsonFileName1 = @"C:\\Users\Alexander\Desktop\times1.json";
        private List<kalender> _times;


       
        
        [HttpPost]
        public ActionResult Index(kalender obj)
        {
          //  Load(obj);
          //  _times.Add(new kalender() { Datum = DateTime.Now.ToString() });
            kalender kl = new kalender();
           Json(new { datum = obj.Datum,wachtwoord = obj.Password });
           // _times.Add(obj);
            
            try
            {
           
            }
            catch (Exception) { }
           
            obj.SelectedEnumId++;
         
          //  kl.Password = obj.Password;
            var json = JsonConvert.SerializeObject(obj, Formatting.Indented);
         
            
            using (var writer = new StreamWriter(JsonFileName1))
            {
                writer.Write(json);
                
            }
            return View();
        }
    
       

       

        private void Load(kalender obj)
        {

            if (System.IO.File.Exists(JsonFileName1))
            {
                using (var reader = new StreamReader(JsonFileName1))
                {
                    var json = reader.ReadToEnd();
                    obj = JsonConvert.DeserializeObject<kalender>(json);

                }
            }

            if (obj == null)
                obj = new kalender();
        }

    




    }
    
}


View
HTML:
@model PE1.Models.kalender
@{
    ViewBag.Title = "Index";
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/themes/smoothness/jquery-ui.css" />
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js"></script>
}


@{
    AjaxOptions options = new AjaxOptions();
    options.HttpMethod = "POST";
    options.Confirm = "Zeker?";
    options.OnBegin = "OnBegin";
    options.OnComplete = "OnComplete";
    options.OnFailure = "OnFailure";
    options.OnSuccess = "OnSuccess";
    options.LoadingElementId = "divProgress";
    options.LoadingElementDuration = 1000;
    options.UpdateTargetId = "divResponse";
    options.InsertionMode = InsertionMode.InsertAfter;
    
}





<script type="text/javascript">
    $(function () { // will trigger when the document is ready
        $('.datepicker').datepicker(); //Initialise any date pickers
        
    });
</script>


    <div>
       <h1>Online Kalender</h1> 
        <div id="kader">
      <p>THuis</p>
@using (Html.BeginForm("Index", "Home", options))
{
    @Html.ValidationSummary(true)
    
    <fieldset>
        <legend>Kaldender</legend>
        @*@Html.DropDownListFor(model => model.Password, listItems)*@<br />
        @Html.LabelFor(model => model.Password)<br />

        @Html.EditorFor(model => model.Password)
       
        @Html.ValidationMessageFor(model => model.Password)<br />
        @Html.EnumDropDownListFor(model => model.MyEnum)

        <div class="form-group input-group-sm">
            @Html.LabelFor(model => model.Datum)
            @Html.TextBoxFor(model => model.Datum, new { @class = "form-control datepicker", placeholder = "Enter Drop-off date here..." })
            @Html.ValidationMessageFor(model => model.Datum)
        </div>
        <input type="submit" value="Submit"/>
        <input type="reset" value="Reset"/>
     
       
        
    </fieldset>
    @Ajax.ActionLink("Klik hier om een Ajax ActionLink uit te voeren", "ProcessLink", options)



}

Model

Code:
 public class kalender
    {
        //public string Datum { get; set; }
       //  [Required]  
      //  [DataType(DataType.Date)]
      //  public Nullable<System.DateTime> Datum { get; set; }

     public string Datum { get; set; }

        [Required]    
        public string Password { get; set; }
              [Required]  
        public string Type { get; set; }
              [Required]
     [Key]

        public int SelectedEnumId { get; set; }
              [Required]  
        public TestEnum MyEnum { get; set; }


    }
}

Alvast bedankt
 
using (var writer = new StreamWriter(JsonFileName1,true))
{
writer.Write(json);

}

dit was de oplossing
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan