【问题标题】:Json Result to List in ASP.net ViewJson 结果在 ASP.net 视图中列出
【发布时间】:2018-10-06 19:04:50
【问题描述】:

这是我在联系课程中的表格

 <form method="POST">
<fieldset>
    <div class="form-group">
        <input class="form-control" placeholder="E-mail" name="subid" autofocus="">
    </div>
      <button href="" class="btn btn-gm btn-success">View</button>
</fieldset>

这是我在控制器中的代码,我有一个名为 Contact 的视图

  [HttpGet]
        public ActionResult Contact()
        {     

            return View();

        }
        [HttpPost]
        public ActionResult Contact(string subid)
        {
            try
            {
                var webClient = new WebClient();
                string url = string.Format(BASE_URL + "Subjectstatus/{0}", subid);
                var json = webClient.DownloadString(url);
                var js = new JavaScriptSerializer();

                ViewBag.attendlist = js.Deserialize<List<attendlist>>(json);

                return View();


            }
            catch
            {
                ViewBag.con = "gg";
                return null;
            }

        }

这是我的参加者课程

 public class attendlist
    {
        [Display(Name = "ID")]   
        public string sid { get; set; }
        [Display(Name = "Name")]
        public string name { get; set; }
        [Display(Name = "Subject")]
        public string sub { get; set; }
        [Display(Name = "Date")]
        public string date { get; set; }
    }

这是联系人视图,我试图循环使用每个

@foreach (var dd in ViewBag.attendlist)
{
    <h3>@dd.ID</h3> 

}

这是我尝试加载联系人视图时的错误

【问题讨论】:

  • 您从未使用过定义为 js 变量的 JavaScriptSerializer。反序列化你下载的字符串。
  • 是的,我不知道如何使用 JavaScriptSerializer 反序列化并进入 LIST

标签: json asp.net-mvc list deserialization


【解决方案1】:
[HttpGet]
    public ActionResult Contact()
    {           

        return View( new ViewContact() );

    }
    [HttpPost]
    public ActionResult Contact(ViewContact contact)
    {
        try
        {
            var webClient = new WebClient();
            string url = string.Format(BASE_URL + "Subjectstatus/{0}", contact.subid);
            var json = webClient.DownloadString(url);
            var js = new JavaScriptSerializer();
            attendlist list= js.Deserialize<attendlist>(json)

            contact.attendlist = list;             

            return View(contact);


        }
        catch
        {
            ViewBag.con = "gg";
            return null;
        }

    }

班级查看联系方式

  public class ViewContact
  {
    public attendlist list { get; set; }
    public string subid { get; set; }
  }

以及视图中的foreach

 foreach(var dd in Model.list){
          //your html view code
    }

景色

<form method="POST">
<fieldset>
<div class="form-group">
    @Html.TextBoxFor(m => m.subid, new { @class = "form-control", @placeholder = "Email" }) >
</div>
  <button href="" class="btn btn-gm btn-success">View</button>
</fieldset>

*Note textboxfor ,获取模型属性,稍后将其正确绑定到动作提交

*请注意,现在您必须将联系人而不是字符串传递给 Contact(ViewContact contact) 操作

【讨论】:

  • 在你做的时候检查你是否有一个好的json var json = webClient.DownloadString(url);
  • 仍然没有进入我的列表
  • 问题是我认为的viewbag,因为attendlist list= js.Deserialize(json) 没有出错
  • 你必须发送返回 View(list);并将参加者列表设置为您的视图模型,尝试一下,然后@foreach(模型中的var dd)
  • 如果不能像视图一样发送对象,则必须建立一个VM对象,以添加参加者列表
猜你喜欢
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-11
相关资源
最近更新 更多