2016-12-04 142 views
0

我读this,并试图实现我的应用程序的ViewDataDictionary但没有工作从View传递数据部分。在.NET CORE

在我看来,我有下面的代码:

@{ 
    var myTest = new 
      { 
       UserId = "cdb86aea-e3d6-4fdd-9b7f-55e12b710f78", 
       UserName = "iggy", 
      }; 

} 
@Html.Partial("~/Partials/test.cshtml", myTest) 

test.cshtml很简单,当我写@Model,我得到{ UserId = cdb86aea-e3d6-4fdd-9b7f-55e12b710f78, UserName = iggy }

我怎样才能提取此作为JSON,所以我可以读@Model.UserName

我试着使用:

<script type="text/javascript"> 
@ 
    { 
     <text> 
      var obj = JSON.parse(@Model); 
     </text> 
    } 
</script> 

,并试图:

<script type="text/javascript"> 
     @:var obj = JSON.parse(@Model); 
</script> 

,并试图:

@Html.Raw(Json.Encode(object)) 

但是毫无效果,任何帮助!

+0

请出示使用这些代码块时呈现的HTML。 – CodeCaster

+0

@CodeCaster请亲切看到我对Haim的回答,因为我正从手机写这篇文章,难以复制/粘贴我的提交。谢谢 –

+0

你可以使用类型类/对象而不是匿名类型吗?这样你就不会使用智能感知。 – alltej

回答

0

我遇到类似的问题来了,当我将我的.NET应用程序到.NET的核心。 在.NET我可以只返回JSON(jsonModel)在我的控制器,并用它在我看来,作为data.UserIDdata.UserName(见下文调整代码以匹配您的样品)。 在.net内核中,我必须先在我的控制器中使用SerializeObject,然后在视图javascript部分中使用JSON.parse才能使其工作。

在.NET CORE以下的作品。假设你有一些模型:

public class SomeModel 
{ 
    public string UserId { get; set; } 
    public string UserName { get; set; } 
} 
在你的控制器返回JSON对象

using Newtonsoft.Json; 

[HttpPost]   
public IActionResult someAction() 
{ 
    SomeModel jsonModel = new SomeModel(); 
    jsonModel.UserId = "cdb86aea-e3d6-4fdd-9b7f-55e12b710f78"; 
    jsonModel.UserName = "iggy"; 

    var serializedJsonModel = JsonConvert.SerializeObject(jsonModel); 
    return Json(serializedJsonModel); 
} 

,并在您的视图JavaScript部分你可以从你的模型值:

<script type="text/javascript"> 
    $.post("@Url.Action("someAction", "YourController")", 
     function (data) { 
      var oJson = JSON.parse(data); 
      UserId = oJson.UserId; 
      UserName = oJson.UserName; }); 
</script> 
0

如果您只对匿名类型的JSON序列化感兴趣,可以简单地声明局部的@modelobject

在你的主观点:

@{ 
    var myTest = new 
    { 
     UserId = "cdb86aea-e3d6-4fdd-9b7f-55e12b710f78", 
     UserName = "iggy", 
    }; 
} 

@Html.Partial("~/Partials/test.cshtml", myTest) 

而在你test.cshtml部分:

@model object 

<script type="text/javascript"> 
    var obj = @Html.Raw(Json.Encode(Model)); 
</script> 
+0

:(不幸的是没有与我的案件 –

+0

@HasanAYousef,究竟是什么“不起作用”?是否有错误? – haim770

+0

好吧,我的情况有点不同,因为我正在做的是将'view'转换为'string',它迄今在视图和partials中都能正常工作,但是一旦需要读取'部分'作为'JSON'发生了一些事情,并且页面没有出现,我正在使用此示例http://stackoverflow.com/a/40950901/2441637'api/returnView',我可以通过电子邮件该文件如果感兴趣。 –

相关问题