2016-10-10 81 views
-1

我的模型我想JSON字符串转换为C#阵列

public class Questions 
{ 
    public string Question { get; set; } 

    public string[] Options { get; set; } 
} 

我的控制器方法来创建纸

[HttpPost] 
    public ActionResult Create() 
    { 
     var resolveRequest = HttpContext.Request; 
     resolveRequest.InputStream.Seek(0, SeekOrigin.Begin); 
     string jsonString = new StreamReader(resolveRequest.InputStream).ReadToEnd(); 
     var dist = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(jsonString); 
     string[] result = dist.Select(kv => kv.Value.ToString()).ToArray(); 
     var conn = new MongoClient(Settings.Default.ConnectionStringSetting); 
     var server = conn.GetServer(); 
     mongodb = server.GetDatabase(Settings.Default.DbMongoName); 
     var collection = mongodb.GetCollection<MultiChoice>("MultiChoice"); 
     collection.Update(Query<PaperDetail>.EQ(s => s.paperName, "sam"), Update<MultiChoice>.AddToSet(s => s.questions, new Questions { Question = "Some question", Options = result })); 
     return RedirectToAction("MultipleChoice"); 
    } 

我想我的JSON字符串转换为字符串数组,并通过所有数据“字符串[]选项“

+0

什么问题? – Arijoon

+1

@Arijoon没有:D至少,不是我能看到的... – Icepickle

+0

如何将json数组反序列化为c#字符串数组? – user3573876

回答

0

您试图用类似代码生成多选的方式,然后试图将json字符串转换回来,而不是所有的方式ASP.Net MVCWebAPI想让你去做。有非常非常简单和容易的方法来做到这一点。最好的办法是 -

  1. 渲染,其中包含编辑模板
  2. 使用形式后视图直接发布和使用默认的模型绑定器绑定它。您将直接获取对象。 MVC会为你转换它。

试试这个文章 -

https://msdn.microsoft.com/en-us/library/dd405231(v=vs.98).aspx

编辑

使用这样的事情 -

[HttpPost] 
public ActionResult Create(Questions model) 
{ 
} 

,但使这项工作,你必须使用一个视图类似于此 -

@model Questions 
...... 

@using (Html.BeginForm("Create", ..., FormMethod.Post,..) 
{ 
    @Html.TextBoxFor(x => x.Question) 

    @Html.DropDownListFor(model => model.Options, Model.Options.Select(x => new SelectListItem() { Text = x Value = x })) 
+0

问题是我无法将json字符串转换回c#数组... – user3573876

+0

请告诉我如何从json字符串中获取所有值到数组中。 – user3573876

+0

我已经做了,但你似乎只是需要解决方案,不想学习这一点。长远来看不好。无论如何,请检查编辑。 –